判断一个数是否为对称且不大于五位数的素数。
11 101 272
YesYesNo
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define M 100000
int a[M];
void su()
{
int i,j;
a[1]=0;
for(i=2;i<=M;i++)
a[i]=i;
for(i=2;i<=M/2;i++)
for(j=2;j<=M/2;j++)
if(i*j>=M)
break;
else
a[i*j]=0;
}
int mo(char x[])
{
int i,j,flag=0;
int len=strlen(x);
switch(len)
{
case 5:
if(x[4]==x[0]&&x[3]==x[1])
flag=1;
break;
case 4:
if(x[3]==x[0]&&x[1]==x[2])
flag=1;
break;
case 3:
if(x[2]==x[0])
flag=1;
break;
case 2:
if(x[0]==x[1])
flag=1;
break;
case 1:
flag=1;
break;
}
return flag;
}
int main()
{
char b[100];
while(scanf("%s",b)!=EOF)
{
if(strlen(b)>5)
printf("No\n");
else
{
int b1=atoi(b);
su();
if(a[b1]==b1&&mo(b)==1)
printf("Yes\n");
else
printf("No\n");
}
}
return 0;
}