D. Taxes

https://codeforces.com/problemset/problem/735/D

题意:给定一个数字n,n的taxes是n的所有除数(n除外),现在可以将n分解为任意的若干个数字的和(除1外),问最小的taxes是多少。

思路:哥德巴赫猜想,如果n是偶数,且n不为2,那么n可以分解为两个质数的和,答案是2,如果n为2,答案是1。如果n是奇数,且n自己是质数,答案是1,或者n-2是质数,答案是2,或者,n分解为一个偶数+一个质因子,答案是3。

inline void solve() {
    int n;
    cin >> n;

    int ans;
    if (n % 2 == 0) {
        if (n == 2) {
            ans = 1;
        }
        else {
            ans = 2;
        }
    }
    else {
        bool isn_2 = true;
        bool is_n = true;
        for (int i = 2; 1ll * i * i <= n; ++i) {
            if ((n - 2) % i == 0) {
                isn_2 = false;
            }
            if (n % i == 0) {
                is_n = false;
            }
            if ((!isn_2) && (!is_n)) {
                break;
            }
        }
        if (is_n) {
            ans = 1;
        }
        else if (isn_2) {
            ans = 2;
        }
        else {
            ans = 3;
        }
    }

    cout << ans << '\n';
}
posted @ 2025-12-07 09:39  _Yxc  阅读(5)  评论(0)    收藏  举报