//思路:
// 例子:
// 对于偶数:
// 特例: 2 最少1个 2=2
// 其他偶数: (最少都为两个)
// 4 --> 最少两个 4=2+2
// 46 --> 最少两个 46=3+43
// 对于奇数:
// 当奇数为素数时:(最少一个)
// 23 --> 最少一个 23=23
// 当奇数不为素数时:
//本身-2后的数为素数 (两个)
//如: 9 --》最少两个 9=2+7
//本身-2后的数不为素数 (三个)
//如: 27 --》最少三个 27=5+3+19 (你无法让它等于两个素数之和)
// 故而一个整数的 最少素数和 有1个或2个或3个 (至于有没有其他的我无法证明)
#include<stdio.h>
//判断是否为素数
int sushu(int num){
int flag=0;//0为素数,1不为素数
for(int i=2;i<num;i++){
if(num%i==0){
//能除尽
flag=1;
}
}
return flag;
}
int countSum(int num){
//对于2:
if(num==2){
return 1;
}
//对于除了2的偶数:
if(num!=2&&num%2==0){
return 2;
}
//对于奇数
//为素数时
if(sushu(num)==0){
return 1;
}
//不为素数时
if(sushu(num)==1){
//判断该素数减去2为什么数
if(sushu(num-2)==0){
//为素数
return 2;
}else{
//不为素数 如:27-2后为25
return 3;
}
}
}
int main(){
int num,count;
scanf("%d",&num);
//判断该数最少有几个素数的和构成
count=countSum(num);
printf("%d",count);
}