110705 Summation of Four Primes

原创 2013年12月04日 14:40:43


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))
			{
				results.add(i);
				results.add(x - i);
				return;
			}
		}
	}
	
	private static List<Integer> GetFourPrimes(int x)
	{
		if (x <= 7)
			return null;
		List<Integer> results = new LinkedList<Integer>();
		results.add(2);
		x -= 2;
		if ((x % 2) == 0)
		{
			results.add(2);
			x -= 2;
		}
		else
		{
			results.add(3);
			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);
		}
	}

}


PC/UVa 110705/10168 Summation of Four Primes

求四个素数之和等于给定的数n ! 题目中描述每个奇数要么是素数要么可以写成三个素数之和,也就是说如果n是奇数,四个数之和当中肯定有一个数是2 ,否则就形不成一个奇数,n-2 扔为奇数,第二个数取3 ,...
  • chaojiaini
  • chaojiaini
  • 2012年03月06日 21:18
  • 275

欧拉项目第十题 Summation of primes

The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17. Find the sum of all the primes below two mill...
  • cgf_01
  • cgf_01
  • 2016年03月11日 12:56
  • 228

Summation of Four Primes(歌德巴赫猜想)

Summation of Four Primes  题目链接:click here~ 题目要求:           给出一个整数要你将其拆成由四个素数组成的数。如果,不能拆则输出“Impo...
  • u010016150
  • u010016150
  • 2014年07月18日 10:48
  • 1028

Problem 10 Summation of primes (素数和)

Summation of primes Problem 10 The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17. Find...
  • liangzhaoyang1
  • liangzhaoyang1
  • 2016年10月26日 17:09
  • 288

Summation of Four Primes - PC110705

原创:Summation of Four Primes - PC110705 作者:MilkCu 题目描述 Summation of Four Primes   ...
  • milkcu
  • milkcu
  • 2014年04月13日 13:39
  • 1114

summation of four primes

// Summation of Four Primes.cpp : Defines the entry point for the console application. // #include...
  • Hilda_Chen
  • Hilda_Chen
  • 2011年03月10日 18:42
  • 398

10168 Summation of Four Primes

一道数论的题,问一个数是否能被分解成四个素数相加的方式,打表发现知道1e7之内的相邻素数之间的差距不超过145,而素数只有一个2是偶数。 而根据哥伦巴克猜想每个非二偶数都可以拆成两个素数的和。这样我...
  • beyhhhh
  • beyhhhh
  • 2015年05月18日 17:28
  • 203

UVA-10168 Summation of Four Primes

题意:将一个数分解成四个素数相加 分析:最少的素数为2,所以该数至少为8=2+2+2+2. 当n>8分为奇偶:由哥德巴赫猜想猜想,一个合数可以分解成两个素数相加,所以此题就是有点技巧了,但n为奇数...
  • show999hao
  • show999hao
  • 2013年11月19日 13:44
  • 673

欧拉计划(10)Summation of primes

【题目】 The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17. Find the sum of all the primes below ...
  • sgzqc
  • sgzqc
  • 2015年05月09日 17:28
  • 307

UVA10168 Summation of Four Primes【筛选法】

Euler proved in one of his classic theorems that prime numbers are infinite in number. But can every...
  • tigerisland45
  • tigerisland45
  • 2018年01月09日 23:16
  • 82
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:110705 Summation of Four Primes
举报原因:
原因补充:

(最多只允许输入30个字)