题目描述
定义两个相差为 2 2 2 的素数称为素数对,如 5 5 5 和 7 , 17 7,17 7,17 和 19 19 19 等,要求找出所有两个数均不大于 n n n 的素数对。
输入格式
一个正整数 n n n。 1 ≤ n ≤ 10000 1 \le n \le 10000 1≤n≤10000。
输出格式
所有小于等于
n
n
n 的素数对。每对素数对输出一行,中间用单个空格隔开。若没有找到任何素数对,输出 empty。
样例 #1
样例输入 #1
10
样例输出 #1
3 5
5 7
样例 #2
样例输入 #2
100
样例输出 #2
3 5
5 7
11 13
17 19
29 31
41 43
59 61
71 73
样例 #3
样例输入 #3
3
样例输出 #3
empty
代码
#include <bits/stdc++.h>
using namespace std;
bool flag[10005];
int main()
{
int n;
cin >> n;
memset(flag, true, sizeof(flag));
flag[0] = flag[1] = false;
for (int i = 2; i <= n; i++)
{
if (flag[i])
{
for (int j = 2; i * j <= n; j++)
{
flag[i*j] = false;
}
}
}
bool fla = false;
for (int i = 2; i <= n - 2; i++)
{
if (flag[i] && flag[i+2])
{
fla = true;
cout << i << " " << i + 2 << endl;
}
}
if (!fla)
{
cout << "empty" << endl;
}
return 0;
}
1930



被折叠的 条评论
为什么被折叠?



