为了账号安全,请及时绑定邮箱和手机立即绑定

4-14 不懂步骤意思

此代码中,if (m%n==0)

               break;

}

if(m==n)

     printf("%d",m);

}

return 0;

}

这几步什么意思,不理解~

正在回答

4 回答

判断m除以n后的余数是否为0,是就执行break;再判断m是否等同n,是就打印m到屏幕。

1 回复 有任何疑惑可以回复我~
#1

MJonas 提问者

为什么要利用余数?
2015-09-06 回复 有任何疑惑可以回复我~
#2

Virture 回复 MJonas 提问者

这个是判断素数的条件,你要查一下什么是素数
2015-09-06 回复 有任何疑惑可以回复我~
#3

MJonas 提问者

非常感谢!
2015-09-07 回复 有任何疑惑可以回复我~
#4

Virture 回复 MJonas 提问者

不客气
2015-09-07 回复 有任何疑惑可以回复我~
查看1条回复

刚看了你的疑问,使用求余和除法是不一样的,如8%2=0,8%4=0而8/2=4,8/4=2;m%n=0,表示m能整除n,

if(m%n==0)这句,如果m整除n,这行后面的break;

if(m%n==0)

break;         /*##外层循环一次,内层循环多次中有符合m整除n的数,并且n是内层循环  被整除的最小的数,也就是说  n是m的最小被除数 , 比如8%2==0就跳出内循环了,不会执行8%4或8%8这一步了;*/

后面的

if(m==n)/*筛选出有可能是素数的数后,再次筛选,想一下:n是m最小的被除数,m,n都大于1,当m=n时,意思就是只能自己整除自己了,也就是素数了*/



0 回复 有任何疑惑可以回复我~
  1. 当m=2时执行子循环,因为n从2开始所以n<m不成立,直接跳出子for循环,因为m=n=2,所以输出2.

  2. 当m=3时,执行子循环,因为3%2!=0.所以继续执行子循环,因为有个n++.所以n变成了3.当n=3时因为n<m不成立,所以跳出子循环,又因为m=n=3,所以输出3.

  3. 当m=4时,执行子循环,因为4%2==0,直接执行breeak,跳出子循环,又因为m=4 n=2 m!=n。所以不输出m=4.然后执行m=5的时候的情况以此类推。。。。。

    我认为是这样的。

6 回复 有任何疑惑可以回复我~
#1

羽丶

你好,请问 m=4时, n++之后已经变成3 了, 为什么还是执行 4%2?
2015-10-07 回复 有任何疑惑可以回复我~
#2

阿西ol 回复 羽丶

又重新开始循环了
2016-01-14 回复 有任何疑惑可以回复我~

如果都不是那


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       927032    人
  • 解答问题       21534    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

4-14 不懂步骤意思

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号