#include<stdio.h> #include<math.h> #include<stdlib.h> #include<algorithm> using namespace std; const int maxn=10010; int prime[maxn]; bool p[maxn]={0};//表示0为素数 int num=0; bool isPrime(int n){ if(n<=1) return false; else{ int sqr=(int)sqrt(1.0*n); for(int i=2;i<=sqr;i++) if(n%i==0) return false;} return true; } void Find_Prime() { //如果是素数存入 for(int i=1;i<maxn;i++) { if(isPrime(i)==true) { prime[num++]=i; p[i]=true; } } } //判断回文数 bool isPalindrome(int n) { int sum=0; int nCopy=n; int len=log10(n)+1; while(len>1) { sum+=(n%10)*(pow(10,len-1)); n=n/10; len--; } sum+=(n%10)*(pow(10,len-1)); if(sum==nCopy) return true; else return false; } //1.先判断长度 //2.取余数,*10^长度,累加到sum中 //3.长度结束,比较sum与n是否相等 int main() { Find_Prime(); int n=0,m=0; scanf("%d %d",&n,&m); if(n>m) { swap(n,m); } int count=0; for(int i=n;i<=m;i++) { if(isPalindrome(i)==true&&p[i]==true) { printf("%6d",i); count++; if(count%5==0) printf("\n"); } } system("pause"); } |
Double click to view unformatted code.