poj-2262 Goldbach's Conjecture

原创 2012年03月28日 23:10:29
                                                                     K - Goldbach's Conjecture
Crawling in process...Crawling failedTime Limit:1000MS    Memory Limit:65536KB    64bit IO Format:%I64d & %I64u

Description

In 1742, Christian Goldbach, a German amateur mathematician, sent a letter to Leonhard Euler in which he made the following conjecture:
Every even number greater than 4 can be
written as the sum of two odd prime numbers.

For example:
8 = 3 + 5. Both 3 and 5 are odd prime numbers.
20 = 3 + 17 = 7 + 13.
42 = 5 + 37 = 11 + 31 = 13 + 29 = 19 + 23.

Today it is still unproven whether the conjecture is right. (Oh wait, I have the proof of course, but it is too long to write it on the margin of this page.)
Anyway, your task is now to verify Goldbach's conjecture for all even numbers less than a million.

Input

The input will contain one or more test cases.
Each test case consists of one even integer n with 6 <= n < 1000000.
Input will be terminated by a value of 0 for n.

Output

For each test case, print one line of the form n = a + b, where a and b are odd primes. Numbers and operators should be separated by exactly one blank like in the sample output below. If there is more than one pair of odd primes adding up to n, choose the pair where the difference b - a is maximized. If there is no such pair, print a line saying "Goldbach's conjecture is wrong."

Sample Input

8
20
42
0

Sample Output

8 = 3 + 5
20 = 3 + 17
42 = 5 + 37
这道题目要求我们将一个数分解成两个素数。我们要做的是开一个数组来存储素数。然后从第一个素数开始塞选,看一下差是否为素数,是就输出,不是就继续循环。
#include<math.h>
#include<stdio.h>
int h[1000001]={0};
int main()
{
	int  n,i,b,c,d,k=0;
	h[1]=1; 
	b=(int)sqrt(1000000);
	for(i=2;i<=b;i++)
	{
		if(h[i]==0)
		{
			d=1;
			for(c=2;d<1000000;c++)
			{
				d=i*c;  //能相乘得到的都不是素数。
				h[d]=1;
				if(d==1000000)
					break;
			}
		}
	}
	while(scanf("%d",&n)!=EOF)
	{
		k=0;
		if(n==0)
			break;
		else
		{
			for(i=2;i<n;i++)
			{
				if(h[i]==0&&h[n-i]==0)
				{
					k=1;
					printf("%d = %d + %d\n",n,i,n-i);
					break;
				}
			}
			if(k==0)
				printf("Goldbach's conjecture is wrong.\n");
		}
	}
	return 0;
}

Goldbach's Conjecture(筛选法求素数)

解题思路: 筛选法求素数模板题,
  • userluoxuan
  • userluoxuan
  • 2014年08月08日 20:34
  • 347

Goldbach`s Conjecture 【素数线性筛法】

Goldbach`s Conjecture Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu S...
  • u014427196
  • u014427196
  • 2015年03月09日 23:14
  • 371

POJ Goldbach's Conjecture(素数筛~欧拉筛法)

Goldbach's Conjecture Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 39018   Acc...
  • u014361775
  • u014361775
  • 2015年01月26日 19:01
  • 534

LightOJ 1259 - Goldbach`s Conjecture (分解偶数为两个素数之和)

1259 - Goldbach`s Conjecture     PDF (English) Statistics Forum Time Li...
  • Rain722
  • Rain722
  • 2017年03月21日 16:11
  • 192

POJ 2262 Goldbach's Conjecture (求解素数的一般筛和线性筛)

POJ 2262 Goldbach's Conjecture (求解素数的一般筛和线性筛)
  • Tc_To_Top
  • Tc_To_Top
  • 2015年08月03日 23:05
  • 736

各种语言版本实现欧拉猜想 Euler's sum of powers conjecture

Euler's sum of powers conjecture There is a conjecture in mathematics that held for over 200 ...
  • GarfieldEr007
  • GarfieldEr007
  • 2016年01月07日 12:44
  • 523

ZOJ Goldbach 2013年长沙赛区网络赛

迟到了一天的AC。。。。 思路: 先把单个素数 或着 两个素数能组成的情况预处理一下,然后对于给出的 n,拿第三个素数去和两个素数的情况匹配,最后要注意去重。 详情见代码。 因为手残少敲了一个 els...
  • u012161037
  • u012161037
  • 2013年09月24日 20:21
  • 1664

POJ2909_Goldbach's Conjecture【素数判断】【水题】

题目大意:给出一个偶数,要求在这个偶数的范围内,有几对素数和是等于这个偶数的 注意素数对的不重复性! 比如 n = a + b(a,b为素数) 则n = b + a 就重复了 思路:只需要枚举2到...
  • u011676797
  • u011676797
  • 2014年09月24日 09:01
  • 1015

HDU——1397Goldbach's Conjecture(二分查找+素数打表)

Goldbach's Conjecture Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/O...
  • a88770202
  • a88770202
  • 2016年02月15日 21:07
  • 220

HDU——1397Goldbach's Conjecture(二分查找+素数打表)

Goldbach's Conjecture Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Ot...
  • a88770202
  • a88770202
  • 2016年05月12日 16:42
  • 136
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:poj-2262 Goldbach's Conjecture
举报原因:
原因补充:

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