哥德巴赫猜想:任意大於 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;
}
n/2,避免重複組合int 適用範圍約 ±21 億,大數需用 long long 或大整數庫輸入大於 6 的偶數: 20 20 = 3 + 17 20 = 7 + 13 20 符合哥德巴赫猜想