#include<stdio.h> #include<string.h> #include<math.h> int prime(int n)//判定素数 { if(n<=1) return 0; int i; for(i=2;i<=sqrt(n)/2;i++) { if(n%i==0) return 0; } return 1; } int main() { int m,n,i,j,b[10],s[10000],len=0; scanf("%d %d",&m,&n); for(i=m;i<=n;i++) { int k=0,t; t=i; memset(b,0,sizeof(b)); while(t!=0)//将每个数拆开存放到数组中 { b[k++]=t%10; t=t/10; } int flag=0; for(j=0;j<k;j++)//判断回文 { if(b[j]!=b[k-j-1]) { flag=1; break; } } if(flag==0&&prime(i)==1)//若是回文并且是素数 s[len++]=i; //存放到数组s中 } for(i=0;i<len;i++) //输出s中各个元素 { printf("%6d",s[i]); if(i%5==4) printf("\n"); } return 0; } |
Double click to view unformatted code.