编程笔记2-验证哥德巴赫猜想 c

    技术2022-07-10  142

    题目:哥德巴赫猜想中写到,一个充分大的偶数(大于等于4),它可以分解为两个素数(质数)的和。

    任务是将输入的偶数n ,分解为两个素数的所有可能打印出来。

    例如:

    8 = 3 + 5.

    20 = 3 + 17 20 = 7 + 13.

    40 = 11 + 31 40 = 13 + 29 40 = 19 + 23

    42 = 5 + 37 42 = 11 + 31 42 = 13 + 29 42 = 19 + 23

    #include <stdio.h> #include <stdlib.h> int diagnose(int i); int main(void) { int n, i, j, flag; scanf("%d", &n); for (i = 2; i < n; i++) { if (diagnose(i)) { for (j = 2; j < n; j++) { if (diagnose(j)) { if (i + j == n && i >= j) { printf("%d + %d = %d\n", i, j, n); } } } } } return 0; } int diagnose(int i) { int m; for (m = 2; m < i; m++) { if (i % m == 0) { return false; } } if (m >= i && m != 2) { return true; } return false; }

    或者

    #include <stdio.h> #include <stdlib.h> int diagnose(int i); int main(void) { int n, i, j, flag; scanf("%d", &n); for (i = 1; i < n; i++) { j = n - i; if (diagnose(i) && diagnose(j)) { printf("%d + %d = %d\n", i, j, n); } if(j<i){ break; } } return 0; } int diagnose(int i) //用于判断素数 { int m; for (m = 2; m < i; m++) { if (i % m == 0) { return false; } } if (m >= i && m != 2) { return true; } return false; }
    Processed: 0.010, SQL: 9