素数计算,判断大数是否是素数。如10000!+(随机数)(200分)

数论证明:在N以内的素数数目M有: 当N->无穷大时候 M/N -> Ln(N)*Ln(N)/N
请注意,当N比较小的时候不是很准确,比如: LN(8)*Ln(8)/8=0.541
而实际上是 2,3,5,7四个素数,实际比例是 4/8=0.5
10000! 的大小是: 2^ΣLogN(2,i),i从1到10000;
即:2^118459,也就是说有11.8万位 !
那么有Ln(2^118459)*Ln(2^118459)≌6.7e9 个素数,
需要的存储空间是:6.7e9*118459/8≌9.9e13 bytes,大约是1万GB。
creation-zy兄讲的用概率获得素数的办法是个不完全的办法,但可以运用于RSA算法中。
因为楼主需要判断这样大的一个数字是否是素数,所以需要一个1万GB大的超级素数表,
不过这个表在地球上不可能找到,因为需要精确的找到一个大素数本身就是可怕的![:D]
 
谢谢各位!
 
很抱歉,我算错了,其实应该是∫[1/ln(x)]dx的,那是不可积函数。但一定比ln(n)*ln(n)还大,甚至比 sqrt(x) 还大。那么结果更糟糕了。
 
顶部