top1编程
← 返回题目
题解

【入门】歌德巴赫猜想

1 条题解

  • 0
    @ 2026-7-30 1:09:47

    解题思路

    枚举较小的素数,判断另一个数是否也是素数,找到符合条件的一组。

    参考代码

    // 这道题的做法:先读入题目给出的数据,再用简单的循环和判断完成要求。
    #include <iostream>
    #include <cmath>
    using namespace std;
    
    // 判断一个数是否为素数
    bool isPrime(int num) {
        if (num < 2) return false;
        for (int i = 2; i <= sqrt(num); i++) {
            if (num % i == 0) {
                return false;
            }
        }
        return true;
    }
    
    int main() {
        int n;
        cin >> n;
        
        // 遍历所有小于等于n的偶数
        for (int even = 4; even <= n; even += 2) {
            // 查找两个素数,使它们的和等于当前偶数
            for (int a = 2; a <= even / 2; a++) {
                int b = even - a;
                if (isPrime(a) && isPrime(b)) {
                    cout << even << "=" << a << "+" << b << endl;
                }
            }
        }   
        return 0;
    }
    

    复杂度

    代码只使用了简单变量、循环和判断。若循环检查了 n 个数据,时间复杂度通常为 O(n);没有开辟与输入规模相关的额外数组时,空间复杂度为 O(1)。

    • 1