数据5—1e8
多组输入
#include<stdio.h>
#include<stdlib.h>
#include<stack>
#include<iostream>
#include<string.h>
#include<math.h>
using namespace std;
int sushu(int n)
{
double s=n;
for(int i=2;i<=sqrt(s);i++)
{
if(n%i==0)
return 0;
}
return 1;
}
void huiwen1(int x,int y)
{
int a;
for(a=2;a<10;a++)
{
if(sushu(a)==1&&a>=x&&a<=y)
printf("%d\n",a);
}
}
void huiwen3(int x,int y)
{
int a[2],n;
for(a[0]=1;a[0]<10;a[0]+=2)
{
for(a[1]=0;a[1]<10;a[1]++)
{
n=a[0]*101+a[1]*10;
if(sushu(n)==1&&n>=x&&n<=y)
printf("%d\n",n);
}
}
}
void huiwen5(int x,int y)
{
int a[3],n;
for(a[0]=1;a[0]<10;a[0]+=2)
{
for(a[1]=0;a[1]<10;a[1]++)
{
for(a[2]=0;a[2]<10;a[2]++)
{
n=a[0]*10001+a[1]*1010+a[2]*100;
if(sushu(n)==1&&n>=x&&n<=y)
printf("%d\n",n);
}
}
}
}
void huiwen7(int x,int y)
{
int a[4],n;
for(a[0]=1;a[0]<10;a[0]+=2)
{
for(a[1]=0;a[1]<10;a[1]++)
{
for(a[2]=0;a[2]<10;a[2]++)
{
for(a[3]=0;a[3]<10;a[3]++)
{
n=a[0]*1000001+a[1]*100010+a[2]*10100+a[3]*1000;
if(sushu(n)==1&&n>=x&&n<=y)
printf("%d\n",n);
}
}
}
}
}
int main()
{
int x,y;
while(scanf("%d %d",&x,&y)!=EOF)
{
huiwen1(x,y);
if(x<=11&&y>=11)
printf("11\n");
huiwen3(x,y);
huiwen5(x,y);
huiwen7(x,y);
}
return 0;
}
这里有几个默认的:
- 素数一定不是偶数(除了2)
- 偶数位数的回文素数只有11
- 素数判断到sqrt(n)即可,可以自行百度