歌德巴赫猜想

来源:互联网 发布:天谕男性捏脸数据 编辑:程序博客网 时间:2024/05/02 02:42

验证歌德巴赫猜想 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]);
}*/


}


}

0 0
原创粉丝点击