文章
5
粉丝
0
获赞
28
访问
4.6k
 
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1000005;
long long f[maxn];
//*******************素数筛选法********************
void func(int a) {
    for (int i = 2; i <= a; i++) {
        if (f[i] == 0) {
            for (int j = i * 2; j <= a; j += i) {
                f[j] = 1;//不是素数,标记1
            }
        }
    }
}
int main() {
    f[maxn] = { 0 };
    func(maxn);
    long long  n,cnt;
    while (scanf("%d", &n) != EOF) {
        cnt = 0;
        for (int i = 2; i < n; i++) {
            if (f[i] == 0 ) {
 &...
登录后发布评论
这个的N的范围是10^9次方,所以一次for就会超时,所以你需要思考一下,所以其实你只需遍历到sqrt(N)就可以了,更大的只需要判断N是不是素数。