题目
现有一正整数,希望去掉这个数中某一个数字之后,可以得到一个回文素数。
回文素数:表示这个数即是素数,也是回文数,例如: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;
}