如何算算一万亿以内的素数
于金龙 2014-07-21 05:12:07 某天,偶突发奇想,我们能不能自己求出一万亿以内的全部素数!
其实算法挺简单的,将1至一万亿的数都创建出来.....
找到最小的素数....2....将2的倍数都删掉...
再找到比2大的最小的素数...3....将3的倍数都删掉.....
直至找到 比Math.sqrt(1000000000000L)=1000000小的最大的素数
-----
然而这只是理论上可行!!!
首先,一万亿已经超出了int的最大范围,所以我们只能用long
其次,JVM也不允许我们一次将一万亿个long类型的数据写入内存,别说一万亿,连一千万都够呛!
所以,只能分段算喽!
此外,还隐藏了几点.......如果能到10楼或以上,我会把隐藏的几点自己摸索的诀窍分享的哦!