题目描述
两个差为22的素数称之为孪生素数
现在输入整数n,mn,m,求n \sim mn∼m以内的所有孪生素数对
输入格式
nn和mm (2 \lt n,m \leq 200002<n,m≤20000)
输出格式
若干行,每一行为一对相差为22的素数(两个数都在n \sim mn∼m内)
如果没有符合条件,输出-1
样例输入
2 10
样例输出
3 5
5 7
附上AC代码
#include <bits/stdc++.h>
using namespace std;
bool Isprime(long long n){
if(n<2) return false;
long long m=sqrt(n);
for(long long i=2;i<=m;i++){
if(n%i==0) return false;
}
return true;
}
int main(){
int a,b;
int c;
int d=0;
cin>>a>>b;
for(int i=a;i<=b-2;i++){
if(Isprime(i) && Isprime(i+2)) {
cout<<i<<" "<<i+2<<endl;
d++;
}
}
if(d==0) cout<<"-1";
return 0;
}