学习,永无止境!|

韩熙隐ario

园龄:2年11个月粉丝:0关注:0

2024-05-05 00:00阅读: 11评论: 0推荐: 0

筛选法求质数

今天学到一个求质数简单易懂的算法,效率也很高的求职质数算法,开一个数组,从前往后遍历,如果没有被标记证明是质数,没错找到一个质数就被该质数的倍数标记排除,最后得到的数组就是质数了,代码如下

#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
const int N = 1e+7;
vector<int> v;
bool st[N];

void getPrimes(int n)
{
    for (int i = 2; i <= n; i++) {
        if (st[i]) continue;
        //如果没有被标记过就是质数 
        v.push_back(i);
        //将后面的倍数都排除掉
        for (int j = i + i; j <= n; j += i) st[j] = true;
    }
}

signed main() {
	int n;
	cin >> n; 
	//筛到m的平方根即可 
    getPrimes(n);
    for (int i = 0; i < v.size(); i++) {
    	cout << v[i] << " ";
	}
}

本文作者:ario

本文链接:https://www.cnblogs.com/arioya/p/18173016

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   韩熙隐ario  阅读(11)  评论(0编辑  收藏  举报
评论
收藏
关注
推荐
深色
回顶
收起
点击右上角即可分享
微信分享提示