寻找素数

来源:互联网 发布:网络命令的使用 编辑:程序博客网 时间:2024/05/21 18:50
/**埃拉托斯特尼筛选法:找出小于n的所有素数*思路:*先建立一个集合,包含了2到n范围内的所有整数,从m=2开始,遍历集合元素*删除所有的2的倍数,m=3,删除集合中所有3的倍数,以此类推,最终筛选出2到n的素数*/void findPrime(set<int>& s, int n){s.erase(s.begin(), s.end());if (n <= 1){return;}for (int i = 2; i < n; i++)s.insert(i);for (int m = 2; m *m < n; m++){if (s.find(m) != s.end()){int tmp = 2 * m;while (tmp < n){s.erase(tmp);tmp += m;}}}}