c语言梅森数

  • Post author:
  • Post category:其他


形如 2^n − 12n−1 的素数称为梅森数(Mersenne Number)。例如 2^2 − 1 = 3 、 2^3 − 1 = 7都是梅森数。

1722年,双目失明的瑞士数学大师欧拉证明了 2^{31} − 1 = 2147483647 是一个素数,堪称当时世界上“已知最大素数”的一个记录。

编写程序,对任一正整数n( n \leq 31n≤31 ),输出所有不超过 2^n − 1的梅森数。

正整数n( n≤31)

按从小到大的顺序输出所有不超过 2^n− 1的梅森数,每行一个。如果完全没有,则输出“None”。

例如 6  输出:

3
7
31

先注意换行\n的运算,再注意2^n这为了方便直接用math.h源文件。然后进行简单的素数判断就欧克了,最后注意输出形式,没就就none。

直接上代码

#include <stdio.h>

#include <math.h>

int main(int argc,char *argv[])

{   int n,s,i,z=0,j;

scanf(“%d”,&n) ;

for(i=2;i<=n;i++)

{


s=pow(2,i)-1;

for(j=2;j<sqrt(s);j++)

{

if(s%j==0)

break;

}

if(j>=sqrt(s))

{if(z!=0)

printf(“\n”);

printf(“%d”,s);

z++;}

}

if(z==0)

printf(“None”);

}

直接ac。



版权声明:本文为a257131460266666原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。