#include using namespace std; //判断是不是质数 bool isPrime(int n) { //最快的方法 if (n < 2) return false; if (n == 2 || n == 3) return true; if (n % 6 != 1 && n % 6 != 5) return false; for (int i = 5; i <= floor(sqrt(n)); i += 6) if (n % i == 0 || n % (i + 2) == 0) return false; return true; } //转换整数到字符串 string intToStr(int n) { char str[256] = {0}; sprintf(str, "%d", n); return str; } //是不是回文 bool isHuiWen(int n) { if (n < 10) return false; //将整数转为字符串 string s = intToStr(n); //镜像反转 string s1 = s; reverse(s1.begin(), s1.end()); //如果源串与镜像串一致,那么是回文串 if (s == s1) return true; return false; } int main() { int n; cin >> n; for (int i = 2; i < n; i++) { if (isHuiWen(i) && isPrime(i)) { cout << i << endl; } } return 0; }