数学趣题——哥德巴赫猜想的近似证明
一、分析
可在较小范围内使用枚举法,验证每一个偶数是否能表示成为两个素数的和。
二、源码
1: #include <string.h>
2: #include <stdio.h>
3: 4: int IsGoldbach(int a);
5: int TestifyGB_Guess(int low, int high);
6: int IsPrime(int i);
7: 8: int main()
9: {10: printf("Test 1-100 is Goldbach Guess\n");
11: if (TestifyGB_Guess(1, 100))
12: printf("in 1-100 guess is right\n");
13: else
14: printf("guess is wrong\n");
15: return 0;
16: } 17: 18: int TestifyGB_Guess(int low, int high)
19: {20: int i, j = 0;
21: int flag = 0;
22: 23: for (i = low; i <= high; ++i)
24: {25: if (i % 2 == 0 && i > 2)
26: {27: if (IsGoldbach(i))
28: { 29: j++;30: if (j == 5)
31: {32: printf("\n");
33: j = 0; 34: } 35: }36: else
37: { 38: flag = 1;39: break;
40: } 41: } 42: } 43: 44: if (flag == 0)
45: return 1;
46: else
47: return 0;
48: } 49: 50: int IsGoldbach(int a)
51: {52: int i, flag = 0;
53: for (i = 1; i <= a / 2; ++i)
54: {55: if (IsPrime(i) && IsPrime(a - i))
56: { 57: flag = 1;58: printf("%d=%d+%d ", a, i, a-i);
59: break;
60: } 61: } 62: 63: if (flag == 1)
64: return 1;
65: else
66: return 0;
67: } 68: 69: int IsPrime(int i)
70: {71: int n, flag = 1;
72: if (1 == i)
73: flag = 0; 74: 75: for (n=2; n<i; n++)
76: {77: if (i%n == 0)
78: { 79: flag = 0;80: break;
81: } 82: } 83: 84: if (flag == 1)
85: return 1;
86: else
87: return 0;
88: } 89:

浙公网安备 33010602011771号