永发信息网

C语言:判断已给定整数是否为素数,问题在注释中

答案:2  悬赏:60  手机版
解决时间 2021-11-07 19:27
C语言:判断已给定整数是否为素数,问题在注释中
最佳答案
第一个 循环不继续了,因为不满足循环的条件 2<=1不满足

第二个 素数是只有1和本身是因子,没有其他因子,只要能够找到1个不是1和本身的因子,那说明一定不是素数,所以找到1个,就没有必要往下找了。

第三个,你确定可以 i>k ,k即没有初始化,中间也没有进行任何赋值,你知道k是多少吗?而且这里写错了吧 应该是if(i==m) 一个=表示赋值,两个==才表示判断是否相等、追问谢谢你的回答,但很遗憾我还有不明白的地方。
问题一:但是输入2,程序运行结果是“2是素数”,它怎么运行的?
问题二:为什么跳出break,直接printf ("%d不是素数!\n",m)
那个是if(i==m),少打了个“=”

我调试了一下,i>k可以的追答2是素数很容易判断啊 i=2,但没有满足循环条件, 所以没有执行循环,但是i已经赋值为2了
此时m也等于2
i==m
2 == 2 显然满足条件啊,所以输出是素数啊

第二个 K我真的不明白,你调试的时候,K是多少?你没有赋值,也没有初始化,它就是一个随机数,可以是100 ,可以是0 也可以是10000 ,怎么和i比较大小??追问问题一我明白了,谢谢你啊!为什么跳出break,直接printf ("%d不是素数!\n",m)?

啊,那是另一种方法:我忘写了,其中定义了k,k=sqrt(m),百度追问字数要求有限,完整程序就不写了啊问题一我明白了,谢谢你啊!但是为什么跳出break,直接接printf ("%d不是素数!\n",m)?

啊,那是另一种方法,定义k=sqrt(m),由于追问字数有限,完整程序就不在这给你写了啊!(*^__^*)追答if 和 else 总要执行一个吧 中间break了 i肯定不等于m啊,那么就执行else了
全部回答
#include 
main()
{  
     int  m,i,k;
    scanf("%d",&m);
for(i=2;i<=m-1;i++)    //逗号改成分号,如果m=2,不执行程序,因为每次执行for里面的语句前都会判断是否满足条件的i<=m-1
if(m%i==0)
  break;        //  两种情况下会跳出循环,1. i是m的因子,即m%i==0,此时说明m不是素数;2. i变成m,for正常结束,说明m没有其他因子,是素数 
if(i==m)    //  此处不能是(i>k),k都没有初始化,而且要改成i==m,
printf("%d是素数! ",m)
else
printf ("%d不是素数! ",m)
}追问谢谢你的回答,但很遗憾我还有不明白的地方。
问题一:但是输入2,程序运行结果是“2是素数”,它怎么运行的?
问题二:为什么跳出break,直接printf ("%d不是素数!\n",m)追答
  1.  for(i=2;i<=m-1;i++)设置i=2,m=2,这样就直接输出“2是素数”

  2. 两种情况下会跳出循环,1. i是m的因子,即m%i==0,此时说明m不是素数;2. i变成m,for正常结束,说明m没有其他因子,是素数 

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
这种手纹很少吗?
iphone6s序列号有什么区别吗
武林外传和龙门镖局之间的联系 龙门镖局是武
dance with devils 会有第二季吗
天人还可以积德修福吗?还可以再种下善业吗?
大理大地鹤庆警保联动服务站地址在哪,我要去
三点水的气能组什么词
童装怎么进货
所有仙侠境界划分,特别是古典
符彦卿字冠侯陈州宛丘人,彦卿年十三能骑射事
北京到青岛直线距离是多少公里?坐动车几个小
那坡县财政局地址在哪,我要去那里办事,
1981年阳历九月十日的幸运石是什么?
零线都是电厂接地,那为 什么不可以直接大地
快递把我东西七八天都没送到怎么办
推荐资讯
某人和你单独在一起;某人单独和你在一起。这
带舌字成语有哪些
顶管注浆时漏浆了怎么办?施工方说可以用砂浆
购买便宜点的企业QQ
女人用品有哪些
非乐迪量贩式KTV(塘下店)地址在什么地方,想
通达土产日杂批发部我想知道这个在什么地方
什么叫任务书
填空:让那些瞧不起我们的外国佬,统统( )
竹林关邮政支局办公地址在什么地方,我要处理
杭州萧山金城路412号恒8酒店离四季青多远
榆林市靖边县安源小型汽车科目二考场办公地址
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?