给定L,R,1<=L < R<=1000。求出[L, R]区间内的回文素数个数。(既是回文,又是素数的数)
#include <iostream>
#include <vector>
using namespace std;
bool isPrime(int n)
{
if (n == 1)
return false;
else if (n == 2 || n == 3)
return true;
for (int i=2;i<n/2+1;++i)
{
if(n%i == 0)
return false;
}
return true;
}
int main()
{
int L, R;
cin >> L >> R;
vector<int> primes;
int count = 0; // 回文计数
for (int i = 0; i < R-L+1; i++)
{
if (isPrime(L+i))
primes.push_back(L+i);
}
for (unsigned int i = 0; i < primes.size(); i++)
cout << primes[i] << " ";
cout << endl;
for (unsigned int i = 0; i < primes.size(); i++)
{
if (primes[i]/10 == 0) // 若数字小于10
count++; // 则一定是回文
else if (primes[i]/100 == 0) // 若数字为10到99
{
if (primes[i]/10 == primes[i]%10) // 若十位数与个位数相等
count++;
}
else if (primes[i]/100 == primes[i]%10) //若数字为其他(在100到1000之间,但1000一定使prime,所以不考虑.
count++;
}
cout << count << endl;
return 0;
}