永发信息网

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

答案:2  悬赏:0  手机版
解决时间 2021-05-01 13:45

#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);的意思是什么

最佳答案
n=sqrt(m);
这个是说循环到m的根号就终止了
为什么呢 因为m如果不是素数 那么无非就是一个大数 跟 小数 的乘积
所以不需要从2-m-1都去看能不能被整除只需要测一半就可以了
if(k>n)
printf("%d yes\n",m);
这个意思就是 如果k>n 证明上面的循环全部完毕 仍然没有找到能被整除的
因为如果找到就break了 k不可能大于n
所以 如果k>n就说明所有的数m都不能整除 也就是说他是素数了
全部回答
i在2到sqrt(m)之间任取一个数,如果m能被整除则不是素数,否则就是素数
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我找不到对象怎么办?现在很郁闷
碰到脑残的SB室友该怎么办?
元神怎么升不了阶?
请问YJ在3-2怎样能把苍力拉到外面走廊上?
请问哪天是情人节?
我想知道是爱之切恨之深还是爱之深恨之切!
现在有什么好看的日本动漫?
从福建石狮市坐汽车到浙江义乌要多少钱?
山东5区血之魂臂铠指导价的告诉下
2009年7月20号为什么火影还不更新出来`~等了2
甘肃省卫生厅授予的全省卫生系统专业技术人先
怎么可以关闭手机宠物?
电影《火星没事》完整版在哪找?
火箭现在小强精神的都只他们能进去季后赛吗?
男孩子刚恋爱的时候应不应该把坏思想告诉她女
推荐资讯
宜兴有什么比较大点的不错的拍大头贴的地方
胜桥佳苑东区南门在哪里啊,我有事要去这个地
我最近感觉没有力气 而且一直流汗 这是为什么
逛街但是不花钱,用英语要怎么说?
驾驶证B2可以跨省办理吗?费用在多少,本人在
临汾到武汉多少过路费,郑州开车到武汉要多少
永安卷帘门加工部怎么去啊,有知道地址的么
火车票可以提前几天买?
N78开关机要对时间吗
河南也有一个香格里拉吗?具体在什么地方?那里
2K10MP模式扣篮问题···脚标问题
请问水龙头亮不亮跟电镀有关系吗?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?