题目描述:

如果一个整数只能被1和自己整除,就称这个数是素数。
如果一个数正着反着都是一样,就称为这个数是回文数。例如:6, 66, 606, 6666
如果一个数字既是素数也是回文数,就称这个数是回文素数
牛牛现在给定一个区间[L, R],希望你能求出在这个区间内有多少个回文素数。

输入描述:

输入包括一行,一行中有两个整数(1 ≤ L ≤ R ≤ 1000)。

输出描述:

输出一个整数,表示区间内回文素数个数。

输入样例:

100 150

输出样例:

2

解题思路:

爱奇艺校招的一道水题,写俩个功能函数,一个用来判断是不是回文数,另一个用来判断是不是素数。然后无脑for循环统计[L,R]这个区间内有多少回文素数就行了。

AC代码:

#include <bits/stdc++.h>
using namespace std;

bool isPrime(int n)
{
    if(n <= 1)
    {
        return false;
    }
    for(int i = 2; i <= sqrt(n); i++)
    {
        if(n%i == 0)
        {
            return false;
        }
    }
    return true;
}

bool isHW(int n)
{
    string s1 = to_string(n);
    string s2 = s1;
    reverse(s1.begin(),s1.end());
    if(s1 == s2)
    {
        return true;
    }
    return false;
}

int main()
{
    int L,R;
    cin >> L >> R;
    int cnt = 0;
    for(int i = L; i <= R; i++)
    {
        if(isPrime(i) && isHW(i))
        {
            cnt++;
        }
    }
    cout << cnt << endl;
    return 0;
}