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';
}

浙公网安备 33010602011771号