POJ 2262 Goldbach's Conjecture 素数筛选
来源:互联网 发布:时代光华网络培训 编辑:程序博客网 时间:2024/06/05 16:01
原题: http://poj.org/problem?id=2262
题目:
Goldbach’s Conjecture
Time Limit: 1000MS Memory Limit: 65536K
Total Submissions: 41068 Accepted: 15725
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
思路:
对于给定一个数,找到两个奇素数,使他们的和为给定的数,如果找不到就输出:”Goldbach’s conjecture is wrong.”
对于多种答案,只需要求相差最大的。
这道题我们先用素数筛选,然后枚举它范围内的每个值和剩下的部分,这两个数是否都为奇素数。
代码:
#include <iostream>#include"stdio.h"#include"math.h"#include"string.h"#include"algorithm"using namespace std;typedef long long int lint;bool prime[1000005];void isprime(){ memset(prime,true,sizeof(prime)); for(int i=2;i<=1000000;i++) { if(prime[i]) for(int j=2*i;j<=1000000;j=j+i) { prime[j]=false; } } prime[2]=false;}int main(){ //freopen("in.txt","r",stdin); isprime(); int t; while(scanf("%d",&t)!=EOF,t) { int i; for(i=3;i<t;i++) { if(prime[i]&&prime[t-i]&&i<=t-i) break; } if(i==t) printf("Goldbach's conjecture is wrong.\n" ); else printf("%d = %d + %d\n",t,i,t-i); } return 0;}
- POJ 2262 Goldbach's Conjecture 素数筛选
- POJ 2262 Goldbach's Conjecture ( 筛选法求素数 )
- POJ 2262 Goldbach's Conjecture(素数筛选法)
- Goldbach`s Conjecture 素数筛选
- POJ 2262 Goldbach's Conjecture(素数表)
- poj 2262 Goldbach's Conjecture 【素数筛】
- poj 2262 Goldbach's Conjecture 素数筛
- poj 2262 Goldbach's Conjecture 素数 水题
- POJ 2262 Goldbach's Conjecture(素数相关)
- POJ 2262-Goldbach's Conjecture(素数筛)
- POJ 2262 Goldbach's Conjecture(素数)
- POJ 2262/ ZOJ 1951:Goldbach\'s Conjecture - 筛法打素数表
- 素数水题 POJ 2262 Goldbach's Conjecture
- Poj.2262 Goldbach's Conjecture【素数】 2015/09/22
- POJ 2262 Goldbach's Conjecture(素数表分解质数)
- poj 2262 Goldbach's Conjecture -- 筛法求素数打表
- POJ 2262 Goldbach's Conjecture 素数打表
- POJ 2262 Goldbach's Conjecture 简单的素数
- android Activity中如何获取Context对象
- forward(转发)和redirect(重定向)的区别
- webapp div click事件不能响应的解决办法
- Solr与开源中文分词(IKAnalyzer)
- 【Eclipse】Eclipse快捷键总结
- POJ 2262 Goldbach's Conjecture 素数筛选
- spring注解详解
- GridView属性
- Android自动化基于UIAutomator的实现及代码生成
- Java赋值的线程安全问题
- 在Eclipse下,出现“找不到或无法加载主类 ”的问题的解决方式
- 事实证明显存容量它就是个没什么用的属性
- 第一个之出现一次的字符
- 深度学习概述:从感知机到深度网络