埃拉托斯特尼筛法(简称埃氏筛法),需要先确定一个素数(比如2)然后删除该素数的整数倍数,寻找一个在该素数右边且没有被筛掉的数字即为下一个素数
2 3 4 5 6 7 8 9 10 11 12 13 14 15 (2是素数,筛掉2的倍数↓)
2 3 4 5 6 7 8 9 10 11 12 13 14 15(2的下一个没有被筛掉的数字是3,3即为素数,筛掉3的倍数)
2 3 4 5 6 7 8 9 10 11 12 13 14 15(5没有被筛掉,下一个素数是5,筛掉5的倍数)
2 3 4 5 6 7 8 9 10 11 12 13 14 15
……
以此类推
直到遍历到最后一个数,筛选完成
得到的素数有 2 3 5 7 11 13
为什么这样做可以保证当前素数的下一个没有被删掉的数是素数呢?这是因为如果该数字是合数,那么它一定含有比该数小的因子,按照遍历的顺序一定会删除因子的倍数,那么自然就会将该数删掉了。
1013 数素数(练习小题)
个人代码
#include <iostream>
#include<cstdio>
using name