歌德巴赫猜想

zhaoyuanyuan1981 2005-10-30 07:11:49

首先你要知道什么是歌德巴赫猜想,素数,

键盘接收一个大于2的偶数,这个偶数必是两个素数之和比如:4=2+2,10=3+7并输出这两个素数
有没有人能给个完整的程序代码
...全文
334 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
手指风 2005-11-02
  • 打赏
  • 举报
回复
public class Prime {
private int first,second;
private Prime(){
first = 0;
second = 0;
}
private static Prime instance = new Prime();
public static Prime getInstance(){
return instance;
}
public int getFirst(){
return first;
}
public int getSecond(){
return second;
}
public boolean Split(int arg0){
if(!isEvenNumber(arg0)){
return false;
}
for(int i=0;i<arg0/2;i++){
if(isPrimeNumber(arg0/2+i)&&isPrimeNumber(arg0/2-i)){
first = arg0/2-i;
second = arg0/2+i;
return true;
}
}
return false;
}
public boolean isEvenNumber(int arg0){
if(arg0%2==0){
return true;
}else
return false;
}
public boolean isPrimeNumber(int arg0){
for(int i=2;i<=Math.sqrt(arg0);i++){
if((arg0%i)==0){
return false;
}
}
return true;
}

}
yanxiazhiqiu 2005-11-01
  • 打赏
  • 举报
回复
是错了,不好意思。j<=Math.sqrt(i)少了个等号。
zhaoyuanyuan1981 2005-11-01
  • 打赏
  • 举报
回复
那你能给我说你是哪个公司的吗?还是去那个公司应聘过
我运行了,你的代码不对
参数加了,不对啊
你的QQ是多少,我M你
chen_fu 2005-11-01
  • 打赏
  • 举报
回复
up
888888888888 2005-11-01
  • 打赏
  • 举报
回复
yun
yanxiazhiqiu 2005-11-01
  • 打赏
  • 举报
回复
代码要在命令行里运行,后面要加数字参数。我是西安的。
zhaoyuanyuan1981 2005-11-01
  • 打赏
  • 举报
回复
yanxiazhiqiu(if the words don't come my way...)

你觉得你的代码对吗?你再机子上运行过了吗?
而且我也不知道你的键盘接受是怎么接受的
你是YATIAN 的吗
是西安的吗
Ayor 2005-11-01
  • 打赏
  • 举报
回复
学习,同意楼上的,,,,,,,,,
yanxiazhiqiu 2005-11-01
  • 打赏
  • 举报
回复
思路1楼已经说了,这并不能证明哥德巴赫猜想!你可以展示一个偶数可以是两个素数的和,但不能证明全部的偶数都可以是两个素数的和。
一缕阳光 2005-11-01
  • 打赏
  • 举报
回复
看了歌德巴赫猜想,计算机能实现吗?当年陈锦润好像是研究这个
一缕阳光 2005-11-01
  • 打赏
  • 举报
回复
这是哥德巴赫猜想吗?想法不错,有没有更好的算法呢?
shine333 2005-10-31
  • 打赏
  • 举报
回复
package test;

import java.util.*;
import java.io.*;
import java.math.BigInteger;

public class Test {
public static final List<Integer> PRIME_LIST =
new ArrayList<Integer>(Arrays.asList(2, 3, 5, 7, 9, 11, 13, 15, 17, 19,
23, 29, 31, 37, 41, 43, 47, 49, 53,
59, 61, 67, 71, 73, 79, 83, 89, 97));

private static int currentMax = 97;

public static void main(String[] args) {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String line;
try {
while (! (line = in.readLine()).equals("END")) {
int number = 0;
try {
number = Integer.parseInt(line);
} catch (NumberFormatException ex1) {
System.out.println("Not a number!");
continue;
}

if (number <= 2 || number % 2 != 0) {
System.out.println("Please input an even number that is over 2!");
continue;
}

searchPrimes(number);

int half = number >> 1;

for (int i = PRIME_LIST.get(0); i <= half; i++) {
if (PRIME_LIST.contains(number - i)) {
System.out.println(number + " = " + i + " + " + (number - i));
break;
}
}
}
} catch (Exception ex) {
ex.printStackTrace();
}

}

private static void searchPrimes(int max) {
if (max <= currentMax) {
return;
}

//其实这里应当用sieve,偷懒就用BigInteger了,反正那个PRIME_LIST可以用来作为sieve的依据
for (; currentMax < max; currentMax++) {
if (new BigInteger(currentMax + "").isProbablePrime(10)) {
PRIME_LIST.add(currentMax);
}
}
}
}
classjava 2005-10-31
  • 打赏
  • 举报
回复
8888888888888888888888888888888888888888888888888888^_^
zhaoyuanyuan1981 2005-10-31
  • 打赏
  • 举报
回复
看见了
chinatelly 2005-10-31
  • 打赏
  • 举报
回复
不错
yanxiazhiqiu 2005-10-31
  • 打赏
  • 举报
回复
其实这个程序我在面试题那个帖子上已经发过一遍了,你没看见吗?
yanxiazhiqiu 2005-10-31
  • 打赏
  • 举报
回复
public class Test40{
public static boolean primeNum(int i){
for(int j=2;j<Math.sqrt(i);j++)
if(i%j==0) return false;
return true;
}
public static void main(String[] args) throws Exception{
if(args.length<1)
System.out.println("Usage:A very easy programe!");
int a=0;
try{
a=Integer.parseInt(args[0]);
}catch(ArrayIndexOutOfBoundsException e){
System.out.println("Warning:No command line arguments!");
}catch(NumberFormatException e){
System.out.println("Please enter a number!");
}
if(a%2==0){
for(int i=1;i<a/2;i++)
{
if(primeNum(i)&&primeNum(a-i))
System.out.println(a+"="+i+"+"+(a-i));
}
}
else System.out.println("Please enter an even number!");
}
}
classjava 2005-10-31
  • 打赏
  • 举报
回复
不要逗了^_^
如果我能用计算机,把这个搞出来,我还在这里混
zhaoyuanyuan1981 2005-10-31
  • 打赏
  • 举报
回复
你的这个想法好象有问提,然后p2=n-p1,如果p2也是素数,输出p1,p2
Eastunfail 2005-10-30
  • 打赏
  • 举报
回复
思路:
枚举出所有小于n的素数p1
然后p2=n-p1,如果p2也是素数,输出p1,p2

但是这个并不能证明哥德巴赫猜想

62,627

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧