求10亿之内的所有素数
原题目在这里:
http://bbs2.chinaunix.net/thread-1433650-1-1.html
1,第一步思考:
只有个位数是 1 ,3 ,7 , 9 的数才可能是素数 -- (结论1)
根据这个结论,可以对 10亿内的自然数作如下 划分:
设 集合G为:{ 个位数 为1,3,7,9}
集合X为:{个位数 为 :0, 2, 4, 5, 6,8的数}
2,第二步,反过来想
如果我们能划掉 集合G中 的非素数,则余下的数都是素数了(筛法)
那么,如何才能找出G中的非素数呢?
看如下定理:
非素数一定能写为两个或两个以上素数的乘积:
g= p1*p2*...*pN (pN为素数,N>=2)
好了,我们的定理就写到这里已经够用了
恩,有同学想到了,用乘法!
举个例子:
比如:
1, 3, 7, 9,
11,13,17,19,
21,23,27,29
这12个数中,
我们拿 3 *3 ,得出9,则可以确定,9不是素数把它划掉
拿3*7得出 21,则可以确定,21不是素数,把它划掉
3*9=27 划掉27
3,确定完备性
如何确定集合G中的数全部是素数呢?