/*
* UVA_10168.cpp
*
* Created on: 2013年10月7日
* Author: Administrator
*/
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
/**
* 2 2 3 17
2 2 3 29
2 2 5 37
*/
using namespace std;
int su[10000002];
bool u[10000002];
int num = 0;
int n;
void prepare(){
int i,j;
memset(u,true,sizeof(u));
for(i = 2 ; i <= 10000002 ;++i){
if(u[i]){
su[++num] = i;
}
for(j = 1 ; j <= num ; ++j ){
if(i*su[j] >10000002){
break;
}
u[i*su[j]] = false;
if(i % su[j] ==0){
break;
}
}
}
}
int main(){
prepare();
while(scanf("%d",&n)!=EOF){
if(n < 8){
printf("Impossible.\n");
continue;
}
if(n == 8){
printf("2 2 2 2\n");
continue;
}
if(n == 9){
printf("2 2 2 3\n");
continue;
}
if(n == 10){
printf("2 2 3 3\n");
continue;
}
if(n == 11){
printf("2 3 3 3\n");
continue;
}
if(n == 12){
printf("3 3 3 3\n");
continue;
}
if(n % 2 == 0){
printf("2 2 ");
n -= 4;
}else{
printf("2 3 ");
n -=5;
}
int i;
for(i = 1 ; i <= num ; ++i){
if(su[i] * 2 > n){
break;
}
if(u[n - su[i]]){
printf("%d %d\n",su[i],n-su[i]);
break;
}
}
}
return 0;
}
(数论2.1.2)UVA 10168 Summation of Four Primes(欧拉筛法)
最新推荐文章于 2022-04-11 22:04:06 发布