题意及思路

  • 题意:输出n以内的质数个数。
  • 思路:😂最核心的思想是迭代、迭代、迭代!😏首先预处理N个数,具体迭代算法见check函数。

代码

#include <bits/stdc++.h>

using namespace std;

const int N = 1e6+5;
int q[N];

void check(int n){
    for(int i=2;i<=n;i++){
        q[i] = q[i-1];
        bool f = true;
        for(int j=2;j*j<=i;j++){
            if(i%j==0){
                f = false;
                break;
            }
        }
        if(f) q[i]++;
    }
}

int main(){
    memset(q,0,sizeof(q));
    check(N);
    int t;
    cin >> t;
    while(t--){
        int n;
        cin >> n;
        cout << q[n] << endl;
    }
    return 0;
}