歌德巴赫猜想

验证歌德巴赫猜想 java代码

package cl;


import java.io.File;
import java.io.FileWriter;
import java.io.IOException;


public class GoldBach {

public static boolean[] isPrime =null;
//求n内的所有素数
public static void prime(int n){
isPrime = new boolean[n+1];
for(int i=2;i<=n;i++){
isPrime[i]=true;
}

for(int i=2;i<=n;i++){
if(isPrime[i]){
for(int j=2;j*i<=n;j++){
isPrime[i*j]=false;
}
}

}

}

//验证偶数N是否可以被分解成两个素数相加
public static boolean canadd(int n){
for(int i=2;i<=n/2;i++){
if(isPrime[n-i])
return true;
}
return false;
}


//写入文件
public static void writeFile(int[] num,long[] time,String addir) 
throws IOException{

File f = new File(addir);
FileWriter w = new FileWriter(f,true);
w.write("num  time");
for(int i=0;i<num.length;i++){
w.write("\n");
w.write(num[i]+" "+time[i]);
}

w.close();
}




//求证数组中的数可以符合哥德巴赫猜想
public static void main(String[] args) throws IOException{

int[] num = new int[]{200,400,600,800};
long[] time = new long[num.length];
long startTime = System.nanoTime();

//获取小于数n的质数
prime(num[num.length-1]);
int index=0;
for(int i=4;i<=num[num.length-1];i+=2){
if(!canadd(i)){
System.out.println(i+" can't split");
}

if(i==num[index]){
time[index++]=System.nanoTime()-startTime;
}
}

//将对应时间写入文件
writeFile(num,time,"test.csv");

//控制台输出
/*for(int i=0;i<num.length;i++){
System.out.println(num[i]+" "+time[i]);
}*/


}


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值