实验4-2-9 梅森数(20 分)

实验4-2-9 梅森数(20 分)

形如2n−1的素数称为梅森数(Mersenne Number)。例如$2^2−1=3 2^3−1=7$都是梅森数。1722年,双目失明的瑞士数学大师欧拉证明了$2^{31}−1=2147483647$是一个素数,堪称当时世界上“已知最大素数”的一个记录。

本题要求编写程序,对任一正整数n(n<20),输出所有不超过2n−1的梅森数。

输入格式:

输入在一行中给出正整数n(n<20)。

输出格式:

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

输入样例:

1
6

输出样例:

1
2
3
3
7
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include<math.h>
#include<stdio.h>
int prime (int n){
int i;
long k;
k=sqrt(n)+1;
for(i=2;i<=k;i++){
if(n%i==0){
return 0;
}
}

return 1;

}
int main(void) {
long mp,n=0,i;
scanf("%ld",&n);
if(n<20){
for(i = 2;i<n;i++){

mp=pow(2,i)-1;
if(prime(mp)){

printf("%d",mp);

printf("\n");
}
}
}else{
printf("n不能超過20");
}
return 0;
}
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×