【题目链接】
ybt 1403:素数对
OpenJudge NOI 1.12 10:素数对
【题目考点】
1. 质数
【解题思路】
枚举。
设较大数字为i,那么较小数字为i-2。
较小数字从2开始,那么i从4开始遍历,直到n。枚举每一个数对i和i-2,看哪个数对两个数都是质数,那么输出。
注意:设标志位记录是否存在素数对。如果不存在素数对,则要输出empty。
【题解代码】
解法1:
#include <bits/stdc++.h>
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 = 4; i <= n; ++i)//i为较大的数字,较小的数字为i-2
{
if(isPrime(i) && isPrime(i-2))//如果两个数都是质数
{
isEmpty = false;
cout << i-2 << ' ' << i << endl;
}
}
if(isEmpty)
cout << "empty";
return 0;
}