这道题目中 把Impossible中的.给忘了 悲催
//将一个数写成四个素数和的形式:
//思路:
//根据判断一个数是否可以写成两个质数的和的形式 的思路去解决。
//当一个数小于8时,Impossible,因为8为2+2+2+2最小的四个数的和。
//根据歌德巴赫猜想 一个偶数(本题是大于8)可以分成两个质数的和的形
//即:当数n为偶数时 满足条件。
//当n为奇数时 加1 也满足条件。
#include<stdio.h>
#include<math.h>
#include<string.h>
#define max 10000010
int is_prime[max];
void if_prime()
{
memset(is_prime,-1,sizeof(is_prime));
int num=(int)sqrt(max);
for(int i=2; i<=num; i++)
{
if(is_prime[i])
for(int j=i*i; j<=max; j+=i)
is_prime[j]=0;
}
}
int main()
{
int a,b,c,d;
int n;
if_prime();
while(scanf("%d",&n)!=EOF)
{
if(n<8)
printf("Impossible.\n");
else if(n%2)
{
a=2;
b=3;
for(int i=2; i<=n-5; i++)
if(is_prime[i]&&is_prime[n-5-i]&&(n-5-i)>1)
{
c=i;
d=n-5-i;
break;
}
printf("%d %d %d %d\n",a,b,c,d);
}
else
{
a=2;
b=2;
for(int i=2; i<=n-4; i++)
if(is_prime[i]&&is_prime[n-4-i]&&(n-4-i)>1)
{
c=i;
d=n-4-i;
break;
}
printf("%d %d %d %d\n",a,b,c,d);
}
}
return 0;
}