永发信息网

C 语言编写判断是否为素数的问题

答案:2  悬赏:0  手机版
解决时间 2021-05-01 13:45
  • 提问者网友:箛茗
  • 2021-04-30 23:31

#include"stdio.h"
#include"math.h"
main()
{
int m,n,k;
scanf("%d",&m);
n=sqrt(m);
for(k=2;k<=n;k++)
if(m%k==0)break;
if(k>n)
printf("%d yes\n",m);
else
printf("%d no\n",m);

}

此程序中,n=sqrt(m);的作用何在?if(m%k==0)break;
if(k>n)
printf("%d yes\n",m);的意思是什么

最佳答案
  • 五星知识达人网友:佘樂
  • 2021-05-01 00:50
n=sqrt(m);
这个是说循环到m的根号就终止了
为什么呢 因为m如果不是素数 那么无非就是一个大数 跟 小数 的乘积
所以不需要从2-m-1都去看能不能被整除只需要测一半就可以了
if(k>n)
printf("%d yes\n",m);
这个意思就是 如果k>n 证明上面的循环全部完毕 仍然没有找到能被整除的
因为如果找到就break了 k不可能大于n
所以 如果k>n就说明所有的数m都不能整除 也就是说他是素数了
全部回答
  • 1楼网友:鱼忧
  • 2021-05-01 02:02
i在2到sqrt(m)之间任取一个数,如果m能被整除则不是素数,否则就是素数
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯