# 110705 Summation of Four Primes

279人阅读 评论(0)

import java.util.*;
import static java.lang.Math.*;

public class Main {
private static Map<Integer, Boolean> s_PrimesInfo;
static
{
s_PrimesInfo = new HashMap<Integer, Boolean>();
}

private static boolean IsPrime(int x)
{
Boolean result = s_PrimesInfo.get(x);
if (result != null)
return result;

int mid = (int)sqrt(x);
result = true;
for (int i = 2; i <= mid; ++i)
if ((x % i) == 0)
result = false;

s_PrimesInfo.put(x, result);
return result;
}

private static void GetTwoPrimes(int x, List<Integer> results)
{
int mid = x/2;
for (int i = 2; i <= mid; ++i)
{
if (IsPrime(i) && IsPrime(x - i))
{
return;
}
}
}

private static List<Integer> GetFourPrimes(int x)
{
if (x <= 7)
return null;
x -= 2;
if ((x % 2) == 0)
{
x -= 2;
}
else
{
x -= 3;
}

GetTwoPrimes(x, results);
return results;
}

private static void Handle(int x)
{
List<Integer> results = GetFourPrimes(x);
if (results == null)
System.out.println("Impossible.");
else
System.out.println(results.get(0) + " " + results.get(1) + " " + results.get(2) + " " + results.get(3));
}

public static void main(String[] args)
{
Scanner inScanner = new Scanner(System.in);
while (inScanner.hasNextInt())
{
int a = inScanner.nextInt();
Handle(a);
}
}

}


0
0

* 以上用户言论只代表其个人观点，不代表CSDN网站的观点或立场
个人资料
• 访问：23165次
• 积分：749
• 等级：
• 排名：千里之外
• 原创：55篇
• 转载：0篇
• 译文：0篇
• 评论：0条
文章分类
阅读排行
评论排行