#include<stdio.h>
#include<math.h>
#define MAX 10009999
bool arr[MAX];
void sieve()
{
long long int i,j,k;
k=sqrt(MAX);
for(i=3; i<=k; i+=2)
{
if(arr[i]==0)
{
for(j=i*i; j<MAX; j+=i+i)
{
arr[j]=1;
}
}
}
arr[1]=1;
arr[0]=1;
for(i=4; i<MAX; i=i+2)
{
arr[i]=1;
}
}
int main()
{
long long int a,b,c,d,n,i;
sieve();
while(scanf("%lld",&n)==1)
{
if(n%2==1)
{
c=2;
d=3;
n=n-(c+d);
}
else if(n%2==0)
{
c=2;
d=2;
n=n-(c+d);
}
b=0;
for(i=2; i<n; i++)
{
a=n-i;
if(!arr[a] && !arr[i])
{
b++;
break;
}
}
if(b>0)
{
printf("%lld %lld %lld %lld\n",c,d,a,i);
}
else
{
printf("Impossible.\n");
}
}
return 0;
}
#include<math.h>
#define MAX 10009999
bool arr[MAX];
void sieve()
{
long long int i,j,k;
k=sqrt(MAX);
for(i=3; i<=k; i+=2)
{
if(arr[i]==0)
{
for(j=i*i; j<MAX; j+=i+i)
{
arr[j]=1;
}
}
}
arr[1]=1;
arr[0]=1;
for(i=4; i<MAX; i=i+2)
{
arr[i]=1;
}
}
int main()
{
long long int a,b,c,d,n,i;
sieve();
while(scanf("%lld",&n)==1)
{
if(n%2==1)
{
c=2;
d=3;
n=n-(c+d);
}
else if(n%2==0)
{
c=2;
d=2;
n=n-(c+d);
}
b=0;
for(i=2; i<n; i++)
{
a=n-i;
if(!arr[a] && !arr[i])
{
b++;
break;
}
}
if(b>0)
{
printf("%lld %lld %lld %lld\n",c,d,a,i);
}
else
{
printf("Impossible.\n");
}
}
return 0;
}
0 comments: (+add yours?)
Post a Comment