View Code of Problem 92

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


Back to problem 92