1 条题解

  • 0
    @ 2025-4-21 18:01:35
    #include <iostream>
    #include <vector>
    using namespace std;
    
    int main() {
        int n;
        cin >> n;
    
        if (n < 2) {
            cout << " empty" << endl;
            return 0;
        }
    
        // 使用埃拉托斯特尼筛法标记素数
        vector<bool> isPrime(n + 1, true);
        isPrime[0] = isPrime[1] = false;
        for (int i = 2; i * i <= n; ++i) {
            if (isPrime[i]) {
                for (int j = i * i; j <= n; j += i)
                    isPrime[j] = false;
            }
        }
    
        // 收集所有素数到数组
        vector<int> primes;
        for (int i = 2; i <= n; ++i) {
            if (isPrime[i])
                primes.push_back(i);
        }
    
        // 寻找并输出素数对
        bool found = false;
        for (int i = 0; i < primes.size() - 1; ++i) {
            if (primes[i + 1] - primes[i] == 2) {
                cout<< primes[i] << " " << primes[i + 1] << endl;
                found = true;
            }
        }
    
        if (!found)
            cout << "empty" << endl;
    
        return 0;
    }
    

    信息

    ID
    102
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    递交数
    41
    已通过
    11
    上传者