哥德巴赫猜想。。。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
int n,k,p1,p2,p3;
bool isp(int x)
{
if(x==2)
return true;
else if(!(x&1))
return false;
else
{
double tmp=sqrt(x*1.0)+0.5;
for(int i=3;i<=tmp;i+=2)
{
if(x%i==0)
return false;
}
}
return true;
}
int main()
{
scanf("%d",&n);
if(isp(n))
printf("1\n%d\n",n);
else
{
for(int i=n-2;i>=2;i-=2)
{
if(isp(i))
{
int j=n-i;
if(isp(j))
{
printf("2\n%d %d\n",i,j);
return 0;
}
for(int k=j-2;k>=2;k--)
{
if(isp(k)&&isp(j-k))
{
printf("3\n%d %d %d\n",k,j-k,i);
return 0;
}
}
}
}
}
}