C语言问题求助下,不懂意思了
答案:4 悬赏:20 手机版
解决时间 2021-05-25 17:21
- 提问者网友:不爱我么
- 2021-05-25 00:10
#include “math.h”
main ( )
{ int m,i,k;
scanf(“%d”,&m);
k=sqrt(m);
for(i=2;i<=k;i++)
if(m %i==0) break;
if(i>=k+1)
printf(“%d is a prime number\n”,m);
else printf(“%d is not a prime number\n”,m);
}
这中间的
if(i>=k+1)有什么存在意义
最佳答案
- 五星知识达人网友:三千妖杀
- 2021-05-25 00:37
i>=k+1也就是for语句执行到最后,就是从2到k没找到可以被整除m的数,所以m就是素数
全部回答
- 1楼网友:行雁书
- 2021-05-25 02:38
这是一个判断一个数是否为素数的C程序,这里的 if(i>=k+1),是判断 i 的值是否从2一直加到k+1,根据上面if(m %i==0) break;如果 i 正好是m的约数,那 i 出来的值肯定<=k,则可判断出m必有一个约数是 i,从而得出m不是素数, if(i>=k+1)只是在这里做一个检验,来判断是否将所有的数都验证了一遍,其实也可以改成if(i=k+1),因为如果m是素数,i 最后的值就是k+1
- 2楼网友:骨子里都是戏
- 2021-05-25 01:59
if(i>=k+1)这句话是用来判断m是否为素数,这条语句是在for语句的外面哦。
#include “math.h”
main ( )
{
int m,i,k;
scanf(“%d”,&m);
k=sqrt(m);
for(i=2;i<=k;i++)
if(m %i==0)
break;
if(i>=k+1)
printf(“%d is a prime number\n”,m);
else
printf(“%d is not a prime number\n”,m);
}
- 3楼网友:佘樂
- 2021-05-25 01:31
在for循环里用到一条语句:if(m%i==0) break;
若执行了break后,i的值一定是小于等于k的,
反之,i的值若大于k( i>=k+1) ,说明没有执行过break语句。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
正方形一边上任一点到这个正方形两条对角线的 |
阴历怎么看 ? |