c语言题目,求解释,谢谢了!!
梅森素数是由梅森数而来。所谓梅森数,是指形如2p-1的一类数,常记为Mp 。如果梅森数是素数,就称为梅森素数。
输入3,
那我们就寻找找p<=3梅森数的个数
当p=3时,2的三次方-1=7是梅森素数
当p=2时,2的二次方-1=3是梅森素数
所以n=3是我们可以找到2个梅森数,所以输出2
程序是这样的:
#include<stdio.h>
int power(int m,int p)
{
if(p == 1)
return m;
else
return power(m,p-1)*m;
}
int is_prim(int n)
{
int i;
for(i = 2; i < n; i++)
{
if(n % i == 0)
break;
}
if(i == n)
return 1;
else
return 0;
}
void main()
{
int p,n;
int count = 0;//计数器
scanf("%d",&n);
for(p = n;p > 1; p--)
{
if(is_prim(power(2,p)-1))//判断2^p-1是否是素数,是的话count就加1
{
count++;
}
}
printf("%d\n",count);
}