给一个大于1的整数n,对它进行分拆,不可以拆出1,拆出的每个数贡献它的最大的除了它自己以外的因子,最小化这个贡献的和。
大胆猜测是要分解出一些质数使得大家都是1。
本身是2的就直接输出1就可以了。
根据哥德巴赫猜想,大于2的偶数直接输出2就可以了。
假如是质数,直接输出1就可以了。
剩下的都是奇合数了,奇合数至少是9,奇合数都可以拆一个3出来变成偶数,然后哥德巴赫猜想直接得到答案是3。
除了最后一种情况,就是奇合数拆一个2出来变成奇质数,比如9。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int d[13], f[13];
int main() {
#ifdef Yinku
freopen("Yinku.in", "r", stdin);
#endif // Yinku
int T;
scanf("%d", &T);
while(T--) {
int n;
scanf("%d", &n);
if(n == 2) {
puts("1");
continue;
}
if(n % 2 == 0) {
puts("2");
continue;
}
bool prime = true;
for(int d = 2; d * d <= n; ++d) {
if(n % d == 0) {
prime = false;
break;
}
}
if(prime) {
puts("1");
continue;
}
n -= 2;
prime = true;
for(int d = 2; d * d <= n; ++d) {
if(n % d == 0) {
prime = false;
break;
}
}
if(prime) {
puts("2");
continue;
}
puts("3");
}
}