/* 证明歌德巴赫猜想 */ #include #include int input_data(void) { int data = 0; do { printf("Please input a even integer (>=6):"); scanf("%d", &data); } while (data < 6 || data % 2 == 1); return data; } int is_prime(const int data) { int i = 0; int max = sqrt(data); for (i = 2; i <= max; ++i) { if (data % i == 0) return -1; } return 0; } int goldbach_conjecture(const int n) { int a = 0; int mid = n / 2; for (a = 3; a <= mid; a += 2) { if (0 == is_prime(a)) { if (0 == is_prime(n - a)) { printf("%d can be devided into two prime number: %d and %d\n", n, a, n - a); return 0; } } } return -1; } int main(void) { int n = 0; int flag = 0; /* 输入一个正整数 */ n = input_data(); /* 证明猜想 */ flag = goldbach_conjecture(n); if (0 == flag) { printf("The Goldbach's conjecture is correct!\n"); } else { printf("The Goldbach's conjecture is wrong!\n"); } return 0; }