#include<stdio.h> #include<math.h> #include<string.h> int BackNumber(int m); //判断是否是回文 int IsPrime(int n); //判断是否是素数 int main() { int m,n; int a[1000]; int Isback; int Isprime; int j=0; scanf("%d %d",&m,&n); for(int i=m;i<=n;i++) { Isback=BackNumber(i); Isprime=IsPrime(i); if(Isback&&Isprime) { a[j]=i; j++; } } int g=1; for(int k=0;k<j;k++) { printf("%6d",a[k]); if(g%5==0) //解决每行输出5个数据的问题 { printf("\n"); } g++; } return 0; } int BackNumber(int m) { int t=1; int sum=0; int x=m,i=m; int d; while(x>0) { t*=10; x/=10; } t/=10; while(t>0) { d=i%10; sum+=d*t; i/=10; t/=10; } if(sum==m) { return 1; } else { return 0; } } int IsPrime(int n) { int k; int j; k=(int)sqrt((double)n); //判断素数可从2~sqrt(m)即可,不过要进行强制类型转换。 for(j=2;j<=k;j++) { if(n%j==0) { break; //直接断开,表示不是素数 } } if(j>k) //若j>k则表示都已经检测完毕,所以是素数。 { return 1; } else { return 0; } } |
Double click to view unformatted code.