冰凌之风 @ 2017-08-09 17:10:45
#include<stdio.h>
#include<stdlib.h>
int n[3600];//存放质数
int main(){
int num,i,j,x,y,k=0,sum1;//sum1为最大的质数,num为奇数;
int min=0;//用作最后两个质数的取值判断
scanf("%d",&num);
n[0]=2;//由于质数从3开始储存,应该储存2
for(i=3,x=1;i<num+60;i++){//找出小于该奇数的所有质数
for(j=0;j<=min;j++){
if(i%n[j]==0){k=1;break;
}
}
if(k!=1){
n[x]=i;
k=0;
x++;
min++;
k=0;
}
else k=0;
}
k=0;//k后续要用,清零
for(i=0;i<=min;i++){//找出最大质数,但这个质数与原奇数的差不能小于4
if(num-n[i+1]<4){
sum1=n[i];
num=num-n[i];//将奇数减去该质数
break;
}
}
for(x=0;x<min;x++){
for(y=0;y<min;y++){
if(n[x]+n[y]==num&&x<=y){
k=1;
i=x;
j=y;
break;
}
}
if(k==1)break;
}
printf("%d %d %d\n",n[i],n[j],sum1);
system("pause");
return 0;
}
谢谢你们