1 条题解

  • 0
    @ 2026-5-5 23:17:46

    一种解决方法是使用暴力枚举:将 nn 分解为两个数之和的方式有 O(n)O(n) 种。如果我们能在 O(1)O(1) 时间内判断一个数是否为质数,那么整个算法就可以在 O(n)O(n) 时间内运行。你可以使用埃拉托色尼筛法进行预处理。

    另一种方法是尝试证明该定理。证明很简单:

    • 如果 nn 是奇数,那么 99(n9)(n-9) 就是一个答案(n9n-9 是偶数且至少为 44,因此是合数);
    • 如果 nn 是偶数,那么 88(n8)(n-8) 就是一个答案(n8n-8 是偶数且至少为 44,也一定是合数)。
    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
        int n;
        cin >> n;
        if (n % 2 == 0) {
            cout << 4 << " " << n - 4 << endl;
        } else {
            cout << 9 << " " << n - 9 << endl;
        }
        return 0;
    }
    
    • 1

    信息

    ID
    6979
    时间
    1000ms
    内存
    256MiB
    难度
    1
    标签
    递交数
    0
    已通过
    0
    上传者