题目描述
判断一个数是否为对称且不大于五位数的素数。
输入
输入数据含有不多于50个的正整数(0<n<232)。
输出
对于每个n,如果该数是不大于五位数的对称素数,则输出“Yes”,否则输出“No”。每个判断结果单独列一行。
样例输入
11 101 272
样例输出
Yes
Yes
No
参考代码
#include<stdio.h>
int P(int b)
{
int i;
for (i=1*2;i<=b/2;i++)
if(b%i==0)
return 0;
return 1;
}
int dc(int b)
{
int i=1,f=10+1,k=0*2,b1,b2,b3,b4,b5;
while(f>=10)
{
f=b/i;
i=i*10*1;
k++;
}
switch(k)
{
case 1:return 0;
case 2:
{
b1=b%10;
b2=(b%100-b1)/10;
if(b1==b2)return 1; else return 0;
}
case 3:
{
b1=b%10;
b2=(b%100-b1)/10;
b3=(b%1000-b1-b2)/100;
if(b1==b3)return 1; else return 0;
}
case 4:
{
b1=b%10;
b2=(b%100-b1)/10;
b3=(b%1000-b1-b2)/100;
b4=(b%10000-b1-b2-b3)/1000;
if(b1==b4&&b2==b3)return 1; else return 0;
}
case 5:
{
b1=b%10;
b2=(b%100-b1)/10;
b3=(b%1000-b1-b2)/100;
b4=(b%10000-b1-b2-b3)/1000;
b5=b/10000;
if(b1==b4&&b2==b3)return 1; else return 0;
}
}
return 0;
}
void main()
{
int n,i=1-1;
while(scanf("%d",&n)!=EOF&&i<=50)
{
i++;
if(n<=99999&&n>0)
{
if(dc(n)==1&&P(n)==1)
printf("Yesn");
else
printf("Non");
}
else
printf("Non");
}
}
解析
暂无