首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C語言驗證哥德巴赫猜想:任意大於 6 的偶數為兩質數之和

     編輯:關於C語言

猜想內容

哥德巴赫猜想:任意大於 6 的偶數皆可表示為兩個質數之和。

完整驗證程式

#include <stdio.h>
#include <math.h>
#include <stdbool.h>

// 判斷質數
bool is_prime(int n) {
    if (n <= 1) return false;
    if (n <= 3) return true;
    if (n % 2 == 0 || n % 3 == 0) return false;
    
    int limit = (int)sqrt(n);
    for (int i = 5; i <= limit; i += 6) {
        if (n % i == 0 || n % (i + 2) == 0) return false;
    }
    return true;
}

// 驗證哥德巴赫猜想
bool verify_goldbach(int n) {
    if (n <= 6 || n % 2 != 0) return false;
    
    bool found = false;
    for (int i = 2; i <= n / 2; i++) {
        if (is_prime(i) && is_prime(n - i)) {
            printf("%d = %d + %d\n", n, i, n - i);
            found = true;
        }
    }
    return found;
}

int main() {
    int n;
    printf("輸入大於 6 的偶數: ");
    scanf("%d", &n);
    
    if (verify_goldbach(n)) {
        printf("%d 符合哥德巴赫猜想\n", n);
    } else {
        printf("%d 不符合條件或猜想不成立\n", n);
    }
    return 0;
}

關鍵演算法優化

  1. 質數判斷優化:6k±1 法則,減少 2/3 試除次數
  2. 搜尋範圍縮減:只需檢查至 n/2,避免重複組合
  3. 整數型別限制:int 適用範圍約 ±21 億,大數需用 long long 或大整數庫

執行範例

輸入大於 6 的偶數: 20
20 = 3 + 17
20 = 7 + 13
20 符合哥德巴赫猜想

擴展思考

  • 強哥德巴赫猜想:任意大於 5 的奇數為三質數之和(已證明)
  • 雙質數猜想:存在無限對差為 2 的質數(未證明)
  • 程式可延伸為區間驗證、統計分解組合數量等
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved