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

正在回答

4 回答

让计算机求素数就是要让它把所有小于被除数的数(除了1)都试一遍,比如5是素数,就要判断5/2,5/3,5/4的余数是否为0。如果在这个过程中发现有余数为零,则该数不是素数,跳出当前循环。当m(m-1)的结果还不为零时,则该数为素数(此时n++又运行了一次,故n=m),可据此判断是否输出m。


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

慕粉2146478508 提问者

好的,谢谢了
2017-04-10 回复 有任何疑惑可以回复我~

for(n=2; n<m; n++)

{

            if(  m % n == 0 )       //什么条件下跳出当前循环

              break;                //这里应该退出当前循环了

}

//素数是只能够被1和它本身整除的数

例如:2 能够被1 和它本身整除,它是最小的素数

           3 能够被1整除,不能被2整除,能够被它本身整除,它也是素数

            4 能够被1和它本身整除,但也能够被2整除,不满足素数的条件,他是非素数

所以,在判断数m是否是素数时,只需判断m 能否被 n = 2 至 (m-1)之间的某个数整除,如果满足 m % n == 0,跳出循环,因为已经能够判断出m不是素数,就不用再花时间找出其他能够判断出m不是素数的条件了。

当n 循环至m-1仍然不能被m整除,则m是素数


如果以上理解了,可以优化代码,提高计算效率,思路如下:m 不能被 m/2 + 1的数整除 (例如:判断10是否是素数,10是必定不能够被  6 (10/2 -1)的数整除了),所以可修改判断条件:m 能否被 n = 2 至 (num-1)之间的某个数整除    为  m 能否被 n = 2 至 num/2 -1之间的某个数整除,这样就判断n后半部分的数了。

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

if(m%n == 0)

break;

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

慕粉2146478508 提问者

好的,谢谢了
2017-04-10 回复 有任何疑惑可以回复我~
#2

慕粉2146478508 提问者

好的,谢谢了
2017-04-10 回复 有任何疑惑可以回复我~

是m/(m-1),不是m(m-1)

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

慕粉2146478508 提问者

好的,谢谢了
2017-04-10 回复 有任何疑惑可以回复我~
#2

慕粉2146478508 提问者

好的,谢谢了
2017-04-10 回复 有任何疑惑可以回复我~

举报

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

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

进入课程
意见反馈 帮助中心 APP下载
官方微信