回 帖 发 新 帖 刷新版面

主题:[讨论]哥德巴赫猜想验证程序  请指正其中错误

哥德巴赫猜想

Time Limit:5000MS  Memory Limit:65536K
Total Submit:191 Accepted:13 

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. 

哥德巴赫猜想:对于任一个大于或等于4的偶数n,至少存在一对素数p1和p2,使得n=p1+p2。 
这个猜想目前既没有被证明,也没有被否定。没有人确定这个猜想是否成立。但是,如果对于给定的一个偶数,存在这样一对素数的话,人们是可以找到的。我们的要求是编写一个程序,对于给定的一个偶数,计算出存在多少对素数满足这个猜想。 

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. 

在输入中给出一系列偶数。对于每一个数,程序输出存在的素数对数。注意:我们关心的是真正不同的数字对数,所以不能将(p1,p2)和(p2,p1)作为不同的两对数。 


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. 

每行给出一个整数。假设每个整数为偶数,并且大于或等于4,小于2的15次方。输入文件的结尾用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

回复列表 (共4个回复)

沙发

#include <iostream.h>
#include <math.h> 
const int row=5;
bool Fun(int prime) //判断素数函数
{
int i=2;
bool f=1;
while (i<=sqrt(prime)&&f)
{if (prime%i==0)
f=0;
else
i++;
}
return f;
}

void main()
{
int sta=6,add1,k=0,add2,n;
cout<<"input an even number (>=8):";//提醒用户输入预测偶数
cin>>n;//从键盘读入数据
while (sta<=n)
{
add1=2;
add2=sta-add1;
while(!Fun(add1)||!Fun(add2))
{
add1=add1+1;
add2=sta-add1;
}
if (k>+row)//控制每行输出算式个数
{
cout<<endl;
k=0;
}
{
cout<<sta<<"="<<add1<<"+"<<add2<<" ";
k++;
sta=ata+2;
}
cout<<endl<<"恭喜你,在你给定的范围内,'歌德巴赫猜想'已被验证!"<<endl;
}



大家看看其中的错误与不足  谢谢

板凳

http://acm.pku.edu.cn/JudgeOnline/problem?id=2262

3 楼

http://acm.pku.edu.cn/JudgeOnline/problem?id=2909

4 楼

算法当然对,
但过不了.
效率高不了啊

我来回复

您尚未登录,请登录后再回复。点此登录或注册