C语言梅森数 请问为什么输不出31

原问题:C语言梅森数 请问为什么输不出31
分类:编程开发 > 最后更新时间:【2017-03-26 00:00:19】
问题补充:

#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  提供
  • 公告: 为响应国家净网行动,部分内容已经删除,感谢网友理解。
    19

    分享到:

    其他回答

    暂无其它回答!