如果一个整数只能被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; }