天天看點

哥德巴赫猜想證明

public class guess { public static boolean isprime(int i) { // 判斷參數i是否是素數,是則傳回true反之則傳回false int n; boolean flag = true; if (1 == i) // 1本身不是素數,是以需把這個特殊的數字抛出 flag = false; for (n = 2; n <= i - 1; n++) /* 判斷i是否是素數的一個方法是看2~i-1之間有其因子(能被2整除),有則不是素數傳回false,反之則傳回true*/

if (i % n == 0) { flag = false; break; } return flag; } public static boolean isgoldbach(int a) { // 判斷參數a是否符合哥德巴赫猜想 int i; boolean flag = false; for (i = 1; i <= a / 2; i++) { if (isprime(i) && isprime(a - i)) { // 根據試題分析中的表達式,傳入相關的兩個參數 flag = true;// system.out.print(a

+ "=" + i + "+" + (a - i) + " "); system.out.printf("%3d=%3d+%3d ",a,i,(a - i)); break; // 隻要有一個符合條件的就可以退出循環,判斷下一個偶數 } } return flag; } public static boolean testify_guess(int low, int high) { // 判斷1~100範圍内的所有偶數是否符合哥德巴赫猜想,符合則傳回true,反之則傳回false int i, j = 0;

boolean flag = true; for (i = low; i <= high; i++) if (i % 2 == 0 && i > 2) // 在1~200之間選取大于2的偶數進行猜想測試 if (isgoldbach(i)) { j++; // j用來控制輸出格式 ,每行輸出5個資料 if (j == 10) { system.out.println(); j = 0; } } else { flag = false; break; } return flag; } public static

void main(string[] args) { system.out.println("\n在1~200範圍内,現在開始證明哥德巴赫猜想:"); if (testify_guess(1, 2000000000)) { system.out.println("\n在 1~200範圍内,哥德巴赫猜想是正确的。"); } else { system.out.println("\n哥德巴赫猜想是錯誤的"); } } }

繼續閱讀