#include<stdio.h>
#include<math.h>
int main(void)
{
int n,m,i,j,count=0; // count用来统计是否有梅森数
scanf("%d", &n);
for (i=2; i<=n; i++){ // 1 不是素数,故直接排除在梅森数的范围之内,i 从 2开始
m = pow(2,i) - 1;
for (j=2; j<=sqrt(m); j++){ //接下来即是前面所学的判断素数
if (m % j == 0)
break;
}
if (j > sqrt(m) ){
printf("%d\n", m);
count ++;
}
}
if (count == 0)
printf("None");
return 0;
}
先找出所有符合条件的梅森数,再判断其是不是素数。
不要先找出所有符合条件的素数,计算量太大。