理想的判断素数的方法应该是将所有小于或等于根号n的素数去除n,但是n是一个随机大于1的整数,小于这个数的平方根的素数表不好给定。下面介绍的方法,本意是动态的构建素数表,但是引入了很多冗余的除数。
代码:










































分析:
相对于sqrt(n)次除,上面的程序需要sqrt(n)*8/30次除,效率提升了15/4倍。
自然数n,我们假设小于n的素数数F(n),F(n)的分布规律为:当n趋向于无穷大时,F(n)/(x/logx) = 1;
所以,动态的冗余度近似为:(sqrt(n)*4/15-x/logx)/sqrt(n)*4/15
其他更好的判断素数的算法,希望你能给我留言或者写在评论上,谢谢!