C语言梅森数 请问为什么输不出31
问题补充:
#include<stdio.h>
#include<math.h>
int main(void)
{
int n,i;
int j,k,isp=1;
printf("please input n (n<20):\n");
scanf("%d",&n);
for(i=2;i<=n;i++)
{
k=pow(2,i)-1;
for(j=2;j<k/2;j++)
{
if (k%j==0) { isp=0;break;}
}
if(isp==1) printf("%d\n",k);
}
return 0;
}
最佳答案
很明显,你的
isp=1;位置写错了,它要放在大循环中的.
否则,当第一次isp=0;时,它永远为0了
追问:
大神你好!多谢!但可以麻烦你说得详细点点吗?? 为什么 3 和7 就可以正常输出?大神,麻烦了
3是因为内循环根本没有执行,k/2=1,所以isp为1,有输出而7是执行了循环,但条件k%j==0没有成立(7%2==1,7%3==1)而从15开始,isp就等0了,后面都不可能输出了
最佳答案由网友 whoami1978 提供
其他回答
暂无其它回答!