1614: 五位以内的对称素数
Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 464 Solved: 241
[Submit][Status][Web Board]
Description
判断一个数是否为对称且不大于五位数的素数。
Input
输入数据含有不多于50个的正整数(0<n<232)。
Output
对于每个n,如果该数是不大于五位数的对称素数,则输出“Yes”,否则输出“No”。每个判断结果单独列一行。
Sample Input
11 101 272
Sample Output
Yes
Yes
No
#include<stdio.h> #include<math.h> int main() { int n; while(scanf("%d",&n)!=EOF) { if(weishu(n)&&duichen(n)&&prime(n)) printf("Yes\n"); else printf("No\n"); } } int weishu(int n) { int a[20],i=1; while(n!=0) { a[i]=n%10; n=n/10; i++; } if(i<=5) return 1; else return 0; } int duichen(int n) { int a[20],i=0,k,j; while(n!=0) { a[i]=n%10; n=n/10; i++; } for(j=0,k=i-1;(j<i)&&(j<=k);j++,k--) if(a[j]!=a[k]) return 0; else return 1; } int prime(int n) { int k,i; k=sqrt(n); for(i=2;i<=k;i++) if(n%i==0) return 0; if(i==k+1) return 1; }