梅森素数由梅森数而来,所谓梅森数,是指形如2^p-1的一类数,其中指数p是素数,常记为Mp 。如果梅森数是素数,就称为梅森素数。
注:我这里没用math当中的pow函数,用的是位移表示2的p次方。
#include "stdio.h"
#include "math.h"
int main() {
int a=1;
int count=1;
int prime;
int n=0;
while(a==1) {
int m=0;
prime=(2<<count)-1;
for(int i=2;i<=(int)(sqrt((double)prime));i++) {
if(prime%i==0) {
m++;
break;
}
}
if(m==0) {
n++;
printf("第%d个梅森素数为2^%d-1=%d\n",n,count,prime);
}
count++;
if(count>=31) {
break;
}
}
}
运行结果: