京东笔试--回文素数

题目

现有一正整数,希望去掉这个数中某一个数字之后,可以得到一个回文素数。
回文素数:表示这个数即是素数,也是回文数,例如:12321【一个数字也被默认为是回文数】

C++代码

#include <iostream>
#include <math.h>
using namespace std;

int isPrime(int x)
{   
	int flag=1;
	int k=(int)(sqrt(double(x+1)));
	for(int i=2;i<=k;i++)
	{
		if(x%i==0)
		{
			flag=0;
			break;
		}
	}
	if(flag)
		return 1;
	return 0;
}
int isHuiwen(int x)
{
	int c,t=0;
	c=x; 
	while(c)
	{
		t*=10; 
		t+=c%10; 
		c/=10;
	}
	if(t==x)
		return 1;
	return 0;
}
int isHuiwenPrime(int n){
	if(isHuiwen(n)&&isPrime(n)) 
		return 1;
	return 0;
}
int fundelete(int n){
	int m,num;
	int t = n;
	while(n!=0)  
    {  
        int x=n%10;  
        n=n/10; 
        m++;  
    }  
	for(int i= 1;i<=m;i++){
		int q = pow(10,m-i+1);
		int h = pow(10,m-i);
		num = (t/q)*h+(t%h);
		if(isHuiwenPrime(num))
		{
			cout<<"(回:";
			cout<<num<<" "; 
			return t;
		}	 
	}
	return 0;   
}


int main()
{
	int a,b,count=0;
	while(cin>>a>>b && a!=0 && b>a &&b!=0)
	{
		for(a=a;a<=b;a++)
		{
			if(fundelete(a)!=0)
			{
				count++;
				cout<<"原:";
				cout<<a<<" ";
				cout<<")";
			}		
		}
		cout<<endl;
		cout<<"个数为:";
		cout<<count<<endl;
	}
	return 0;
} 
 

结果

原文地址:https://www.cnblogs.com/sinlearn/p/13449533.html