今天翻题库,碰巧发现一道难住许多洛谷伙伴们的题目,真Easy。
既然有人觉得难,那让我来讲解一下吧!(这篇文章原是我在洛谷写的,结果题解名额满了……【心塞】)
这道题其实非常简单,最先想到的一定是质数判断。所以二话不说,直接开写。
#include <iostream>
using namespace std;
int n;
int prime(int m) {
for (int i = 2; i * i <= m; i++) {
if (m % i == 0)
return false;
} return true;
}
眼尖的小伙伴们可能很快就发现我优化了质数判断。因为我是蒟蒻的第六感告诉我不优化过不了。至于为什么……那等下次再说吧是因为如果输入10000,就需要执行9999次,那在加上主循环,不超个1世纪20毫秒都算仁慈了。
接着,我们直接上主函数。
int main() {
cin >> n;
for (int i = 4; i <= n; i += 2) { // <==1==
for (int j = 2; j <= i / 2; j++) { // <==2==
if (prime(j) && prime(i - j)) {
cout << i << &