/*梅森数,是指形如 2^p-1 的一类数,其中指数p是大于等于2的正整数,常记为M(p)。
如果梅森数是素数,就称为梅森素数。
输入一个长整型数,然后输出比该数字小的梅森素数,例如输入:90,输出为
M(2)=3
M(3)=7
M(5)=31
*/
#include <stdio.h>
#include <stdlib.h>
long int meisen(long int p)
{
long int Mei=1;
while(p>0)
{
Mei*=2;
p-=1;
}
return Mei-1;
}
int isSushu(long int n)
{
long int i;
for(i=2; i<=n; i++)
{
if((n%i==0)&&(i!=n))
{
return 0;
break;
}
}
return 1;
}
int main()
{
long int n;
scanf("%ld",&n);
long int i=2;
while(meisen(i)<n)
{
if(isSushu(meisen(i)))printf("M(%ld)=%ld\n",i,meisen(i));
i++;
}
}
运行结果: