质数筛

#include<bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
int n, primes[N];
int get_prime(int u)
{
    int cnt = 0;
    memset(primes, true, sizeof primes);
    primes[1] = false;
    for(int i = 2; i <= u; i ++ )
    {
        if(primes[i])
        {
            cnt ++ ;
            for(int j = i; j <= u / i; j ++ )
                primes[j * i] = false;
        }
    }
    return cnt;
}
int main()
{
    cin >> n;
    cout << get_prime(n) << endl;


    return 0;
}
#include<bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
int n, primes[N];
int get_prime(int u)
{
    memset(primes, true, sizeof primes);
    primes[1] = false;
    int cnt = 0, q[N];
    for(int i = 2; i <= u; i ++ )
    {
        if(primes[i]) q[cnt ++ ] = i;
        for(int j = 0; q[j] <= u / i; j ++ )
        {
            primes[q[j] * i] = false;
            if(i % q[j] == 0) break;
        }
    }
    return cnt;
}
int main()
{
    cin >> n;
    cout << get_prime(n) << endl;


    return 0;
}

 

posted @ 2022-09-02 17:08  ginkgozyf  阅读(27)  评论(0)    收藏  举报