素数筛法
关键思想
素数筛法是ACM 及各大比赛中必须熟练掌握的最低级的算法,在已知某些素数的情况下对未判断的数进行筛选,筛选掉必然不是素数的数。如何对数进行筛选,依据素数的性质,某个除1以外的正整数是素数,则该数的倍数一定不是素数
举个栗子
从1-10中筛选出所有素数
步骤 | 当前元素 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|---|---|
原始数组 | / | / | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
第一步 | 2 | / | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
第二步 | 3 | / | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 |
第三步 | 5 | / | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 |
第四步 | 7 | / | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 |
以第一步为例:当前元素为2,则将 2∗2=4