首页 > 其他分享 >poj 2262 Goldbach's Conjecture 素数打表

poj 2262 Goldbach's Conjecture 素数打表

时间:2023-02-07 12:36:00浏览次数:73  
标签:prime Conjecture int Goldbach conjecture long 打表 include


Goldbach's Conjecture

Time Limit: 1000MS

 

Memory Limit: 65536K

Total Submissions: 48891

 

Accepted: 18614

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

Source

​Ulm Local 1998​

算法分析:

题意:

给一个数n,满足n=a+b,a,b为质数且b-a最大

实现

直接素数打表就行,一开始的两重循环超时了,看了别人代码,傻了竟然,找到一个直接减不就行了。

代码实现:

#include<cstdio>  
#include<cstring>
#include<cstdlib>
#include<cctype>
#include<cmath>
#include<iostream>
#include<sstream>
#include<iterator>
#include<algorithm>
#include<string>
#include<vector>
#include<set>
#include<map>
#include<stack>
#include<deque>
#include<queue>
#include<list>
using namespace std;
typedef long long ll;
int n,flag=0,k,sum=0,y;

const long N = 1000005;
long prime[N] = {0},num_prime = 0; //prime存放着小于N的素数
int isNotPrime[N] = {1, 1}; // isNotPrime[i]如果i不是素数,则为1
int Prime()
{
for(long i = 2 ; i < N ; i ++)
{
if(! isNotPrime[i])
prime[num_prime ++]=i;
//无论是否为素数都会下来
for(long j = 0 ; j < num_prime && i * prime[j] < N ; j ++)
{
isNotPrime[i * prime[j]] = 1;
if( !(i % prime[j] ) ) //遇到i最小的素数因子
//关键处1
break;
}
}
return 0;
}

int main()
{
int n;
Prime();
while(scanf("%d",&n)!=EOF)
{
if(n==0) break;
int maxx=-1,a,b,flag=0;

for(int i=0;i<num_prime;i++)
{
if(prime[i]>=n) break;
if(isNotPrime[n-prime[i]]!=1) //第一个找到的肯定b-a最大
{
a=prime[i];
b=n-a;
flag=1;
break;

}
}
if(flag==1)
{
printf("%d = ",n);
printf("%d + %d\n",a,b);
}
else
printf("Goldbach's conjecture is wrong.\n");
}
return 0;
}

 

标签:prime,Conjecture,int,Goldbach,conjecture,long,打表,include
From: https://blog.51cto.com/u_14932227/6041968

相关文章

  • POJ 2909 Goldbach's Conjecture
    Goldbach'sConjectureTimeLimit: 1000MS MemoryLimit: 65536KTotalSubmissions: 11574 Accepted: 6807DescriptionForanyevennumberngreaterthanorequal......
  • HDU6198 number number number(打表 矩阵快速幂)
    题意就是找到用K个斐波那契数组不成的最小的数字是谁。先打表找规律1421233348852326609可以发现递推规律:F[n]=4*(F[n-1]-F[n-2])+F[n-3]如果直接递推打......
  • AT_abc227_c [ABC227C] ABC conjecture 翻译
    题目传送门题目描述给出正整数$N$。求$A\leq\B\leq\C$并且$ABC\leq\N$的正整数对$(A,B,C)$的个数。注意,在限制条件下,保证答案小于$2^{63}$。输入......
  • 更___的小数据打表/输出样例
    #include<bits/stdc++.h>#defineELputs("Elaina")#defineregregisterintusingnamespacestd;enumkawaii{yoshino=2,koishi=3,yomi=16}suki;inlinevoidMyDear......
  • L - Fenwick Tree Gym - 103861L(打表,树状数组)
    题意:一开始数组的每个数都是零对于每次操作:可以对一个数加上一个实数在加上实数的同时,对应的i+lowbit(i)一直到<=n都会加上这个实数不同操作可以加上不同的实......
  • POJ 1950(不打表做法)
    这题就是搜……注意设定maxn要不然肯定爆maxn=1*10^最大位数/21234..89-11121314这样的Programaa;constmaxn=1000000000000000;varn,t:longint;a:array[1..15]......
  • HDU 1431 素数回文——————离线暴力打表
    素数回文TimeLimit:2000/1000MS(Java/Others)MemoryLimit:65536/32768K(Java/Others)TotalSubmission(s):23585AcceptedSubmission(s):5550ProblemDescript......
  • 使用打表法找规律
    使用打表法找规律作者:Grey原文地址:博客园:使用打表法找规律CSDN:使用打表法找规律打表法的使用条件打表法适合:输入简单,输出也简单(只有一个数),可以暴力把一部分结果打印......