1.1.4素数and筛法
素数就是只能被1和自身整除的数,素数是有无穷多个的,因为设x1,x2,x3..xn为已知的前面所有素数,则x1*x2...*xn+1显然不能被前面任何数整除,于是它也是素数,如此构造下去即可。对于p是质数,则2^p-1也是质数,我们称之为梅森素数。素数有很多很奇特的应用:素数近来被利用在密码学上,所谓的公钥就是将想要传递的信息在编码时加入素数,编码之后传送给收信人,任何人收到此信息后,若没有此收信人所拥有的密钥,则解密的过程中(实为寻找素数的过程),将会因为找素数的过程(分解质因数)过久,使即使取得信息也会无意义。在汽车变速箱齿轮的设计上,相邻的两个大小齿轮齿数最好设计成素数,以增加两齿轮内两个相同的齿相遇啮合次数的最小公倍数,可增强耐用度减少故障。在害虫的生物生长周期与杀虫剂使用之间的关系上,杀虫剂的素数次数的使用也得到了证明。实验表明,素数次数地使用杀虫剂是最合理的:都是使用在害虫繁殖的高潮期,而且害虫很难产生抗药性。以素数形式无规律变化的导弹和鱼雷可以使敌人不易拦截。(和数字打交道的随机选择时我喜欢选素数--||)。
下面介绍素数筛法c数组保留当前是否被最小素因子筛去,A集合存放素数
Begin i=2 to n
If(当前c[i]未被过滤)将i加入素数集合A
Begin j=0 to A.size()
将c[p[j]*i]过滤 (1)
If p[j]