解题思路:
1.由题可得,判断1-n之间的素数对,如果两个数都是素数,并且相差2,则输出
2.可以设置一个布尔数组,进行埃式筛选法,将n个数是否为素数,都打上标记
3.然后开始遍历,如果a[i]==0并且a[i+2]==0那么输出i和i+2
#include<bits/stdc++.h>
using namespace std;
bool a[10005];//设置布尔数组
int main()
{
int n;
bool flag=0;//打标记
cin>>n;
for(int i=2;i<=sqrt(n);i++)//埃式筛选法
{
if(a[i]==0)//如果此位置元素值为0
for(int j=2;i*j<=n;j++)//从他的2倍开始赋值为1
{
a[i*j]=1;
}
}
for(int i=2;i<=n-2;i++)//依次遍历到n-2
{
if(a[i]==0&&a[i+2]==0)//如果两个数都为素数
{
cout<<i<<" "<<i+2<<endl;//输出并换行
flag=1;
}
}
if(flag==0)//如果没有,则输出empty
cout<<"empty";
return 0;
}