这道题一看就是用素数了,但是怎么用想了很久,后来才想到:
如果一个数本身是素数,那么就不用分了。如果一个数是偶数,那么它可以分成两份,如果一个奇数减去2可以变成一个素数,那么只用分成两份,其他都是三份
#include<bits/stdc++.h>
using namespace std;
bool isprime(int n){
for(int i=2;i<=sqrt(n);i++){
if(n%i==0) return false;
}
return true;
}
int main(){
int n;
cin>>n;
if(isprime(n)) cout<<1<<endl;
else if(n%2==0) cout<<2<<endl;
else if(isprime(n-2)) cout<<2<<endl;
else cout<<3<<endl;
}