素数对
总时间限制: 1000ms 内存限制: 65536kB
描述
两个相差为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<bits/stdc++.h>
using namespace std;
int main(){
int n,oo=2,h=0,a[10001]={1,2}; bool t=0;
cin>>n;
//寻找<=n的素数
for(int i=3;i<=n;i++){
t=0;
//***从2开始到根号i没数能整除i,则素数***只到根号i能节省时间
for(int j=2;j<=sqrt(i);j++){
if(i%j==0){t=1;break;
}
}
if(!t)
{a[oo++]=i;h++;
}
}
t=0;
for(int i=0;i<=h+2;i++){
if(a[i+1]-a[i]==2){cout<<a[i]<<" "<<a[i+1]<<endl;t=1;
}
}
if(!t)cout<<"empty";
return 0;
}