筛选法求素数
#include<cstdio>
#include<cstring>
#define size 1261000
int main()
{
bool t[size];
int s[10001],c=0;
int i=2,v=2,n;
memset(t,0,size*sizeof(bool));
t[0]=t[1]=1;
while(i < size)
{
if(t[i] == 0)
{
if(i-v==2) s[++c]=i;
for(int j = 2; i*j < size; j++)
{
t[i*j] = 1;
}
v=i;
}
i++;
}
while(scanf("%d",&n)!=EOF)
{
printf("%d %d\n",s[n]-2,s[n]);
}
return 0;
}
最古老的求素数法
#include<cstdio>
#include<cmath>
bool isprime(int n)
{
for(int i=2;i<=sqrt(n);i++)
{
if(n%i==0) return 0;
}
return 1;
}
int main()
{
int n,c=0,s[10001];
bool t1=1,t2;
for(int i=3;c<10000;i+=2)
{
t2=isprime(i+2);
if(t1 && t2) s[++c]=i;
t1=t2;
}
while(scanf("%d",&n)!=EOF)
{
printf("%d %d\n",s[n],s[n]+2);
}
return 0;
}