题目:
将一个数字分解成若干个数字相加,求分解后的每一个数字的最大因子之和。
题解:
哥德巴赫猜想。
注意特判N=2,N为素数,N-2为素数的情况。
如果完全按照哥德巴赫猜想差分成N-3,3的话,N-3会再次分解,WA。
#include<iostream>
using namespace std;
bool isPrime(int x){
if(x==1) return false;
if(x==2) return true;
for(int i=2;i*i<=x;i++){
if(x%i==0) return false;
}
return true;
}
int main(){
int x;
while(cin>>x){
if(x==2){
cout<<1<<endl;
continue;
}
if(x%2==0){
cout<<2<<endl;
continue;
}
if(isPrime(x)){
cout<<1<<endl;
continue;
}
if(isPrime(x-2)){
cout<<2<<endl;
continue;
}
cout<<3<<endl;
}
}