1 条题解
-
0
哥德巴赫猜想(升级版)(Ternary Goldbach Conjecture) 题解
思路分析
先用素数筛预处理 内的所有质数。为了保证字典序最小(第一个质数最小,其次第二个质数最小),从 开始从小到大枚举第一个质数 (切勿漏掉偶质数 !例如 ),再从 开始从小到大枚举第二个质数 ,令 :一旦满足 且 为质数,立即输出
p1 p2 p3并结束程序。参考代码
#include <iostream> using namespace std; const int MX = 20005; bool notPrime[MX]; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n; if (!(cin >> n)) return 0; notPrime[0] = notPrime[1] = true; for (int i = 2; i * i <= n; ++i) { if (!notPrime[i]) { for (int j = i * i; j <= n; j += i) notPrime[j] = true; } } for (int p1 = 2; p1 <= n; ++p1) { if (notPrime[p1]) continue; for (int p2 = p1; p1 + p2 + p2 <= n; ++p2) { if (notPrime[p2]) continue; int p3 = n - p1 - p2; if (!notPrime[p3]) { cout << p1 << " " << p2 << " " << p3 << "\n"; return 0; } } } return 0; }
- 1
信息
- ID
- 8572
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者