如果一个整数只能被1和自己整除,就称这个数是素数。
如果一个数正着反着都是一样,就称为这个数是回文数。例如:6, 66, 606, 6666
如果一个数字既是素数也是回文数,就称这个数是回文素数
牛牛现在给定一个区间[L, R],希望你能求出在这个区间内有多少个回文素数。
输入包括一行,一行中有两个整数(1 ≤ L ≤ R ≤ 1000)
输出一个整数,表示区间内回文素数个数。
100 150
2
#include <iostream>
#include <string>
#include <sstream>
#include <math.h>
using namespace std;
inline bool isPrime(int n) {
if(n <= 1)
return false;
int num = ::sqrt(n);
for(int i = 2;i <= num;++i) {
if(n % i == 0)
return false;
}
return true;
}
inline bool isPlalindrome(int i) {
string num_str;
stringstream ss;
ss << i;
ss >> num_str;
int len = num_str.size();
for(int i = 0; i < len/2;++i) {
if(num_str[i] != num_str[len - 1 - i])
return false;
}
return true;
}
int getResult(int l,int r) {
int count = 0;
for(int i = l; i <= r;++i) {
if(isPrime(i) && isPlalindrome(i)) {
count++;
}
}
return count;
}
int main() {
int L,R;
while(cin>>L>>R) {
int count = getResult(L,R);
cout<<count<<endl;
}
}
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
int L,R,n,num=0;
cin>>L>>R;
for(n=L;n<=R;n++)
{
bool flag=true;
for(int i=2;i<sqrt(n)+1;i++)//判断是否为素数
{
if(n%i==0)
{
flag=false;;
}
}
string str=to_string(n);//判断是否回文
string strReverse=str;
reverse(str.begin(),str.end());
if(str==strReverse&&flag==true)
{
num++;
}
}
cout<<num<<endl;
return 0;
}