我们将左右对称的自然数称为回文数,例如:121,4114等;将只能被1与其本身整除的自然数称之为素数,例如:7,353等。
键入n,m,求出n至m(含n与m)之间既是回文数又是素数的自然数共有多少个?
输入格式
一行,两个整数n和m(1≤n≤m≤100000),数与数之间用空格分隔。
输出格式
一行,一个整数,即既是回文数又是素数的个数。
输入/输出例子1
输入:
100 200
输出:
5
#include<bits/stdc++.h>
using namespace std;
string change(int a)
{
stringstream ss;
ss<<a;
string s;
ss>>s;
return s;
}
bool is_prime(int a)
{
for(int i=2;i*i<=a;i++)
{
if(a%i==0)
return false;
}
return true;
}
int d(int a,int b)
{
int sum=0;
for(int i=a;i<=b;i++)
{
string s=change(i);
bool flag=true;
for(int j=0,k=s.size()-1;j<s.size()/2;j++,k--)
{
if(s[j]!=s[k])
{
flag=false;
break;
}
}
if(flag==true)
{
if(is_prime(i))
{
sum++;
}
}
}
return sum;
}
int main(){
int a,b;
cin>>a>>b;
cout<<d(a,b);
return 0;
}