[C] 证明歌德巴赫猜想 →→→→→进入此内容的聊天室

来自 , 2019-10-11, 写在 C, 查看 138 次.
URL http://www.code666.cn/view/d254c8a0
  1. /* 证明歌德巴赫猜想 */
  2. #include <stdio.h>
  3. #include <math.h>
  4.  
  5. int input_data(void) {
  6.         int data = 0;
  7.  
  8.         do {
  9.                 printf("Please input a even integer (>=6):");
  10.                 scanf("%d", &data);
  11.         } while (data < 6 || data % 2 == 1);
  12.  
  13.         return data;
  14. }
  15.  
  16. int is_prime(const int data) {
  17.         int i = 0;
  18.         int max = sqrt(data);
  19.  
  20.         for (i = 2; i <= max; ++i) {
  21.                 if (data % i == 0)
  22.                         return -1;
  23.         }
  24.  
  25.         return 0;
  26. }
  27.  
  28. int goldbach_conjecture(const int n) {
  29.         int a = 0;
  30.         int mid = n / 2;
  31.  
  32.         for (a = 3; a <= mid; a += 2) {
  33.                 if (0 == is_prime(a)) {
  34.                         if (0 == is_prime(n - a)) {
  35.                                 printf("%d can be devided into two prime number: %d and %d\n",
  36.                                                 n, a, n - a);
  37.                                 return 0;
  38.                         }
  39.                 }
  40.         }
  41.  
  42.         return -1;
  43. }
  44.  
  45. int main(void) {
  46.         int n = 0;
  47.         int flag = 0;
  48.  
  49.         /* 输入一个正整数 */
  50.         n = input_data();
  51.  
  52.         /* 证明猜想 */
  53.         flag = goldbach_conjecture(n);
  54.         if (0 == flag) {
  55.                 printf("The Goldbach's conjecture is correct!\n");
  56.         } else {
  57.                 printf("The Goldbach's conjecture is wrong!\n");
  58.         }
  59.  
  60.         return 0;
  61. }
  62.  

回复 "证明歌德巴赫猜想"

这儿你可以回复上面这条便签

captcha