埃式筛
原理 : 如果一个数 X 大于1,那么 2X,3X... 都不是质数——— 2,3,4...的多倍数都不是质数。
所以我们能用2,3,4...作为筛选因子,将其自身的多倍数筛掉,剩下的就是质数。
但是在操作的时候我们不难发现4,6,8等等作为2的多倍数,在2作为筛选因子的时候已经筛过一遍了,所以没有必要再用其作为筛选因子再筛一遍,造成时间上的浪费,
所以根据唯一分解定理,我们可以只选择质数作为筛选因子,筛掉其多倍数。 补充:唯一分解定理(算术基本定理):任意一个大于1的整数都可以分解成若干个素因数的连乘积
那么理论存在,如何使用代码来实现呢?
我们可以用打表数组标记的方法实现埃式筛,如图:
其中0表示为素数,1表示非素数,
以2来举例,就是2筛掉2*2,2*3...直到n的所有数,再从n返回,以此类推。
用代码(c)来表示就是:
