Goldbach's Conjecture(哥德巴赫猜想)

Goldbach‘s Conjecture

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 5277    Accepted Submission(s):
2022

点我

Problem Description

Goldbach‘s Conjecture: For any even number n greater
than or equal to 4, there exists at least one pair of prime numbers p1 and p2
such that n = p1 + p2.
This conjecture has not been proved nor refused yet.
No one is sure whether this conjecture actually holds. However, one can find
such a pair of prime numbers, if any, for a given even number. The problem here
is to write a program that reports the number of all the pairs of prime numbers
satisfying the condition in the conjecture for a given even number.

A
sequence of even numbers is given as input. Corresponding to each number, the
program should output the number of pairs mentioned above. Notice that we are
interested in the number of essentially different pairs and therefore you should
not count (p1, p2) and (p2, p1) separately as two different pairs.

Input

An integer is given in each input line. You may assume
that each integer is even, and is greater than or equal to 4 and less than 2^15.
The end of the input is indicated by a number 0.

Output

Each output line should contain an integer number. No
other characters should appear in the output.

Sample Input

6

10

12

0

Sample Output

1

2

1

 1 #include <iostream>
 2 using namespace std;
 3 int a[32765];
 4 int isprime()
 5 {
 6     int i,k,x;
 7     for(i=2;i<32765;i++)
 8     {
 9         for(k=2;k<=i/2;k++)
10         {
11             if(i%k==0)
12                 break;
13         }
14         if(k==i/2+1)
15             a[i]=1;
16         else
17             a[i]=0;
18     }
19     return 0;
20 }
21 int main()
22 {
23     int x,i,j,count=0;
24     isprime();
25     while(cin>>x&&x)
26     {
27         count=0;
28         for(i=j=x/2;i>=2;i--,j++)
29         {
30             if(a[i]&&a[j])
31             {
32                 count++;
33             }
34         }
35         cout<<count<<endl;
36     }
37 }

Goldbach's Conjecture(哥德巴赫猜想)

时间: 2024-12-28 15:38:53

Goldbach's Conjecture(哥德巴赫猜想)的相关文章

Goldbach&#39;s Conjecture POJ - 2262 线性欧拉筛水题 哥德巴赫猜想

题意 哥德巴赫猜想:任一大于2的数都可以分为两个质数之和 给一个n 分成两个质数之和 线行筛打表即可 可以拿一个数组当桶标记一下a[i]  i这个数是不是素数  在线性筛后面加个装桶循环即可 #include<cstdio> #include<cstring> using namespace std; bool Is_Primes[1000005]; int Primes[1000005]; int cnt; void Prime(int n){ cnt=0; memset(Is_

F - Goldbach`s Conjecture(哥德巴赫猜想)

题目大致的意思是输出一个偶数总共有多少个素数对构成哥德巴赫猜想(PS:陷阱好多,稍一不慎就超内存了) 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 5 using namespace std; 6 7 const long long maxn=1e7+5; 8 9 bool ip[maxn];//使用long long会超内存 10 long long T,n,p[1000005];//

Goldbach`s Conjecture LightOJ - 1259 (素数打表 哥德巴赫猜想)

题意: 就是哥德巴赫猜想...任意一个偶数 都可以分解成两个(就是一对啦)质数的加和 输入一个偶数求有几对.. 解析: 首先! 素数打表..因为 质数 + 质数 = 偶数 所以 偶数 - 质数 = 质数 ... 我真是蠢啊 还有  vis要用bool类型的!!!!  int会直接爆 代码如下: #include <iostream> #include <cstdio> #include <sstream> #include <cstring> #includ

POJ 2262 Goldbach&#39;s Conjecture 数学常识 难度:0

题目链接:http://poj.org/problem?id=2262 哥德巴赫猜想肯定是正确的 思路: 筛出n范围内的所有奇质数,对每组数据试过一遍即可, 为满足b-a取最大,a取最小 时空复杂度分析: 在1e6内约有8e4个奇质数,因为a <= b,时间复杂度在T*4e4+1e6等级.一般T为1e3,足以承受 空间复杂度为1e6,足以承受 1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm&g

POJ2262 ZOJ1951 UVa543 Goldbach&#39;s Conjecture

问题链接:POJ2262 ZOJ1951 UVa543 Goldbach's Conjecture.基础训练级的题,用C语言编写程序. 这个问题是验证哥德巴赫猜想,对于输入的n,找出一对差值最大的奇素数. 使用穷举法来解决这个问题. 目前POJ使用的C语言编译器,似乎比较古老,在别处可以编译通过的代码,在它这里编译错误. AC的C语言程序如下: /* POJ2262 ZOJ1951 UVa543 Goldbach's Conjecture */ #include <stdio.h> #incl

POJ 2262 Goldbach&#39;s Conjecture(素数筛选法)

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 =

Python验证哥德巴赫猜想

今天看到百度知道有人问如何验证1000以内的数符合哥德巴赫猜想,就写了一个 感觉超过10000时有点慢啊,和java比起来效率差了点,希望高手能给优化下 #!/usr/bin/env python __author__ = '淮南霏霏' """ 脚本编写环境python 3.4.2 哥德巴赫猜想 简单验证 """ import math class Goldbach: """ 哥德巴赫猜想:任一大于2的偶数都可写成两

哥德巴赫猜想: 任何一个大于2的偶数都可以拆分为两个素数的和

打印出小于2000的偶数拆分情况: var goldbach = function (n){ for(var i = 2;i<n; i++){ if(isPrime(i) && isPrime(n-i)){return {n1:i,n2:(n-i)} ;} } return undefined; } var isPrime = function (n){ for(var i = 2; i< n; i++){if(n%i == 0){return false;}} return

哥德巴赫猜想(升级版)

题目背景 1742年6月7日哥德巴赫写信给当时的大数学家欧拉,正式提出了以下的猜想:任何一个大于9的奇数都可以表示成3个质数之和.质数是指除了1和本身之外没有其他约数的数,如2和11都是质数,而6不是质数,因为6除了约数1和6之外还有约数2和3.需要特别说明的是1不是质数. 这就是哥德巴赫猜想.欧拉在回信中说,他相信这个猜想是正确的,但他不能证明. 从此,这道数学难题引起了几乎所有数学家的注意.哥德巴赫猜想由此成为数学皇冠上一颗可望不可及的"明珠". 题目描述 现在请你编一个程序验证哥