题目描述
在素数的大家庭中,大小之差为2的两个素数称之为一对“孪生素数”,如3和5、17 和 19 等。请你编程统计出不大于自然数 n 的素数中,孪生素数的对数,要求编写一个函数用于判断一个数字是否是素数。
输入输出格式
输入
一行一个正整数 n,1≤n≤500000。
输出
若干行,每行两个整数,之间用一个空格隔开,从小到大输出每一对孪生素数。
样例
输入1
100
Copy
输出1
3 5
5 7
11 13
17 19
29 31
41 43
59 61
71 73
Copy
时间及空间限制
1s, 256MB.
说明/提示
//***wuhaotian***//
#include <bits/stdc++.h>
using namespace std;
bool isPrime(int n)
{
if(n==1)
{
return false;
}
for(int i=2;i<=sqrt(n);i++)
{
if(n%i==0)
{
return false;
}
}return true;
}
int main()
{
int n;
cin>>n;
for(int i=3;i<n-1;i+=2)
{
if(isPrime(i) && isPrime(i+2))
{
cout<<i<<" "<<i+2;cout<<endl;
}
}
}