要求组成n的素数最多,根据n的奇偶讨论:如果n是偶数,直接打印n/2个数字‘2’就可以了;如果n是基数,则先打印一个‘3’,再打印(n-3)/2个数字‘2’就可以了。
AC代码:
#include<cstdio>
int main(){
int n;
while(scanf("%d",&n)!=EOF){
int c=0;
if(n&1) {
c=(n-3)/2+1;
printf("%d\n",c);
for(int i=0;i<c;++i){
if(i==0) printf("3");
else printf(" 2");
}
}
else {
c=n/2;
printf("%d\n",c);
for(int i=0;i<c;++i){
if(i==0) printf("2");
else printf(" 2");
}
}
printf("\n");
}
return 0;
}
如有不当之处欢迎指出!