【题目描述】
两个相差为2的素数称为素数对,如5和7,17和19等,本题目要求找出所有两个数均不大于n的素数对。
【输入】
一个正整数n(1≤n≤10000)。
【输出】
所有小于等于n的素数对。每对素数对输出一行,中间用单个空格隔开。若没有找到任何素数对,输出empty。
【输入样例】
100
【输出样例】
3 5 5 7 11 13 17 19 29 31 41 43 59 61 71 73
#include <iostream>
#include <cmath>
using namespace std;
bool isPrime(int n)//求大于等于2的整数n是不是质数
{
for(int i = 2; i <= sqrt(n); ++i)
if(n % i == 0)
return false;
return true;
}
int main()
{
int n;
cin >> n;
bool isEmpty = true;
for(int i = 2; i <= n; ++i)//i为较大的数字,较小的数字为i-2
{
if(isPrime(i) && isPrime(i+2))//如果两个数都是质数
{
isEmpty = false;
cout << i << ' ' << i+2 << endl;
}
}
if(isEmpty)
cout << "empty";
return 0;
}