为什么这个输出的结果41也是素数数,但是直接写成a=4又就正常显示为合数了。

2是质数还是合数... 2是质数还是合数

質数又称素数指整数在一个大于1的自然数中,除了1和此整数自身外没法被其他自然数整除的数。换句话说只有两个正因数(1和自己)的自然数即为素数。比1大但不是素数的数称为合数1和0既非素数也非合数。

你对这个回答的评价是

}
版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

素数就是合数,比较优化的素数算法应该是用筛选法

 之前也有解决过这个问题,假设要求的数是 i  ,很暴力的从2 到 i-1 对i进行取余运算非常耗费性能。

后面再回头来看其实有很多地方可以优化

后面知道了有更加优化的 就是 2 4 8其实,2是4 的倍数4是16的倍数,其实 求质数(素数) 只需要从2 到根号 i 就可以求出了  

 
要得到自然数n以内的全部素数必须把不大于

的所有素数嘚倍数剔除,剩下的就是素数 [1]
给出要筛的范围n,找出以内的先用2去筛,即把2留下把2的倍数剔除掉;再用下一个,也就是3筛把3留下,把3的倍数剔除掉;接下去用下一个质数5筛把5留下,把5的剔除掉;不断重复下去......
  1. 列出2以后的所有序列:

  2. 标出序列中的第一个素数,也僦是2序列变成:

  3. 将剩下序列中,划掉2的倍数序列变成:

  4. 如果现在这个序列中最大数小于最后一个标出的素数的平方,那么剩下的序列Φ所有的数都是素数否则回到第二步。

  5. 本例中因为25大于2的平方,我们返回第二步:

  6. 剩下的序列中第一个素数是3将主序列中3的倍数划掉,主序列变成:

  7. 我们得到的素数有:23

  8. 25仍然大于3的平方,所以我们还要返回第二步:

  9. 现在序列中第一个素数是5同样将序列中5的倍数划掉,主序列成了:

  10. 我们得到的素数有:23,5

  11. 因为23小于5的平方,跳出循环.

 

 
 
}

我要回帖

更多关于 1也是素数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信