"思路:\n1. 首先判断输入的偶数 n 是否大于 6,若不大于 6,则输出"请输入大于6的偶数";\n2. 从 2 开始遍历到 n-2,判断每个数是否为素数;\n3. 若当前遍历到的数 i 是素数,那么判断 n-i 是否也是素数;\n4. 若 n-i 也是素数,则输出分解表达式 n = i + (n-i);\n5. 为了保证输出的是字典序最小的分解表达式,我们从 2 开始遍历,并且先找到的分解表达式即为字典序最小的;\n6. 若遍历完毕都没有找到符合条件的分解表达式,则输出"Goldbach's conjecture is wrong."。\n\n代码如下:\n\n#include \n#include \nusing namespace std; \n\nbool isPrime(int n) {\n if(n == 1) return false; \n for(int i = 2; i <= sqrt(n); i++) {\n if(n % i == 0) return false; \n }\n return true; \n}\n\nint main() {\n int n; \n cin >> n; \n if(n <= 6 || n % 2 != 0) {\n cout << "请输入大于6的偶数" << endl; \n return 0; \n }\n for(int i = 2; i <= n-2; i++) {\n if(isPrime(i) && isPrime(n-i)) {\n cout << n << "=" << i << "+" << n-i << endl; \n return 0; \n }\n }\n cout << "Goldbach's conjecture is wrong." << endl; \n return 0; \n}

哥德巴赫猜想验证程序:分解偶数为两个素数之和

原文地址: http://www.cveoy.top/t/topic/qtEN 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录