12 条题解
-
20
较为基础的题目。
int n; bool prime[1000010]; void ensure_prime() { memset(prime, true, sizeof(prime)); prime[0] = false; prime[1] = false; for (int i = 2; i <= 1000000; i++) { if (!prime[i]) continue; for (int j = 2; j <= 1000010; j++) { if (i * j < 1000010) prime[i * j] = false; else break; } } } int main() { ensure_prime(); // 考虑到数据范围较大,需要提前预计算质数列表 cin >> n; while (n) { // 如果为 0 则退出 for (int i = 3; i <= 1000010; i += 2) { if (prime[i] && prime[n - i]) { cout << n << " = " << i << " + " << n - i << endl; break; } } cin >> n; } return 0; }
信息
- ID
- 197
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 2
- 标签
- 递交数
- 567
- 已通过
- 213
- 上传者