写一个统计对称素数的代码
时间: 2025-01-19 22:06:00 浏览: 30
好的,下面是一个统计对称素数的C++代码示例。所谓的对称素数是指一个素数与其反转后的数仍然是素数,例如131和313。
```cpp
#include <iostream>
#include <cmath>
#include <string>
bool isPrime(int num) {
if (num <= 1) return false;
if (num == 2) return true;
if (num % 2 == 0) return false;
int sqrtNum = sqrt(num);
for (int i = 3; i <= sqrtNum; i += 2) {
if (num % i == 0) return false;
}
return true;
}
bool isSymmetric(int num) {
std::string numStr = std::to_string(num);
int len = numStr.length();
for (int i = 0; i < len / 2; ++i) {
if (numStr[i] != numStr[len - 1 - i]) return false;
}
return true;
}
int countSymmetricPrimes(int limit) {
int count = 0;
for (int i = 2; i <= limit; ++i) {
if (isPrime(i) && isSymmetric(i)) {
++count;
}
}
return count;
}
int main() {
int limit;
std::cout << "Enter the limit: ";
std::cin >> limit;
int result = countSymmetricPrimes(limit);
std::cout << "Number of symmetric primes up to " << limit << ": " << result << std::endl;
return 0;
}
```
### 代码解释
1. **isPrime函数**:判断一个数是否为素数。首先排除小于等于1的数,然后判断2是否为素数,接着排除偶数,最后通过循环判断从3到平方根的奇数是否能整除该数。
2. **isSymmetric函数**:判断一个数是否为对称数。将数字转换为字符串,然后比较字符串的前半部分和后半部分的反转是否相同。
3. **countSymmetricPrimes函数**:统计指定范围内对称素数的数量。通过循环遍历每个数,调用isPrime和isSymmetric函数进行判断。
4. **main函数**:从用户输入一个上限值,调用countSymmetricPrimes函数进行统计,并输出结果。
阅读全文
相关推荐



















