View Code of Problem 92

#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.


Back to problem 92