专栏文章

T549092 质数搜寻 题解

题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@miqehbn2
此快照首次捕获于
2025/12/04 03:28
3 个月前
此快照最后确认于
2025/12/04 03:28
3 个月前
查看原文
c++:
CPP
#include <bits/stdc++.h>
using namespace std;

const int MAXN = 1e8 + 10;
bool is_prime[MAXN];

void sieve() {
    memset(is_prime, true, sizeof(is_prime));
    is_prime[0] = is_prime[1] = false;
    for (int i = 2; i * i < MAXN; ++i) {
        if (is_prime[i]) {
            for (int j = i * i; j < MAXN; j += i) {
                is_prime[j] = false;
            }
        }
    }
}

int main() {
    int t;
    cin >> t;
    sieve();
    for (int i = 0; i < t; ++i) {
        int n;
        cin >> n;
        for (int j = 0; j < n; ++j) {
            int op;
            cin >> op;
            if (op == 1) {
                int x, y;
                cin >> x >> y;
                int prime_count = 0;
                for (int num = x; num <= y; ++num) {
                    if (is_prime[num]) {
                        prime_count++;
                    }
                }
                cout << prime_count << endl;
            } else if (op == 2) {
                int z;
                cin >> z;
                vector<int> arr(z);
                for (int k = 0; k < z; ++k) {
                    cin >> arr[k];
                }
                for (int num : arr) {
                    cout << (is_prime[num] ? 1 : 0) << " ";
                }
                cout << endl;
            }
        }
    }
    return 0;
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...