top1编程
← 返回题目
题解

【入门】挛生素数

1 条题解

  • 0
    @ 2026-7-31 4:56:10

    解题思路

    挛生素数是指两个相差 2 的素数对,比如 3 和 5、5 和 7。

    题目要求找出 2 到 N 之间所有的挛生素数对。

    方法:

    1. 写一个判断素数的函数
    2. 从 2 到 N-2 逐个检查 a 和 a+2 是否都是素数
    3. 如果是就输出

    参考代码

    #include <iostream>
    using namespace std;
    
    bool isPrime(int x) {
        if (x < 2) return false;
        for (int i = 2; i * i <= x; i++) {
            if (x % i == 0) return false;
        }
        return true;
    }
    
    int main() {
        int n;
        cin >> n;
    
        for (int a = 2; a <= n - 2; a++) {
            if (isPrime(a) && isPrime(a + 2)) {
                cout << a << " " << a + 2 << endl;
            }
        }
        return 0;
    }
    

    复杂度分析

    • 时间复杂度:O(N√N),N < 1000 可以轻松通过
    • 空间复杂度:O(1)
    • 1