古詩詞大全網 - 成語故事 - 如何用Java驗證哥德巴赫猜想?

如何用Java驗證哥德巴赫猜想?

哥德巴赫猜想原描述是“任壹大於5的整數都可寫成三個質數之和”,歐拉給出等價版本,即“任壹大於2的偶數都可寫成兩個質數之和”,今日常見的陳述為歐拉版本。

使用Java驗證哥德巴赫猜想的代碼如下(在代碼中要求輸入大於6的數字是因為4=2+2、6=3+3,算法直接從8開始驗證):

package algorithms;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

public class GoldbachConjecture {

public static void main(String[] args) {

int i, j, n = 0, f1, f2, m = 0;

System.out.println("驗證哥德巴赫猜想。");

System.out.println("輸入壹個大於6的偶數:");

BufferedReader rr = new BufferedReader(new InputStreamReader(System.in));

try {

m = Integer.parseInt(rr.readLine());

} catch (IOException e) {

}

for (i = 3; i < m / 2; i += 2) {

f1 = f2 = 0;

for (j = 3; j <= i / 2; j += 2) {

if (i % j == 0) {

f1 = 1;

break;

}

}

if (f1 == 1)// 如果i不是質數,下壹個i

continue;

// 直到找到壹個質數i,這是肯定可以找到的

n = m - i;

for (j = 3; j <= n / 2; j += 2) {

if (n % j == 0) {

f2 = 1;

break;

}

}

if (f2 == 1)

continue;

else

break;

}

System.out.println("大於等於6的偶數" + m + "可以分解為:");

System.out.println(i + "與" + n + "兩數之和");

}

}