Run ID:1019

提交时间:2023-06-24 10:32:26

#include<iostream> #include<cmath> using namespace std; // 判断一个数是否为质数 bool isPrime(int n) { if (n <= 1) { return false; } int limit = sqrt(n); for (int i = 2; i <= limit; i++) { if (n % i == 0) { return false; } } return true; } // 判断一个数是否为超级素数 bool isSuperPrime(int n) { if (!isPrime(n)) { return false; } int len = log10(n) + 1; // 计算n的位数 for (int i = 1; i < len; i++) { int m = n / pow(10, i); // 去掉最后i位 if (!isPrime(m)) { return false; } } return true; } int main() { int n; cin >> n; int count = 0; for (int i = 2; i <= n; i++) { if (isSuperPrime(i)) { count++; } } cout << count << endl; return 0; }