用c++定义一个类NUM,求100以内所有的无暇素数。所谓无暇素数是指一个两位整数,其本身是素数,其逆序数也是素数。例如,17是素数,17的逆序数是71,17和71都是素数,所以17和71都是无暇素数.
时间: 2023-11-09 13:04:14 浏览: 73
以下是用C++定义一个类NUM并求解100以内所有无暇素数的代码:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
class NUM {
private:
int num;
public:
NUM(int n) {
num = n;
}
bool is_prime() { // 判断素数
if (num < 2) return false;
int sqrtnum = sqrt(num);
for (int i = 2; i <= sqrtnum; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
int reverse_num() { // 求逆序数
int rev = 0, n = num;
while (n > 0) {
rev = rev * 10 + n % 10;
n /= 10;
}
return rev;
}
bool is_emirp() { // 判断无暇素数
int revnum = reverse_num();
if (num == revnum) return false; // 排除回文素数
NUM rev(revnum);
if (is_prime() && rev.is_prime()) {
return true;
}
return false;
}
};
int main() {
cout << "100以内的无暇素数有:" << endl;
for (int i = 10; i < 100; i++) {
NUM n(i);
if (n.is_emirp()) {
cout << i << " ";
}
}
cout << endl;
return 0;
}
```
输出结果为:
```
100以内的无暇素数有:
13 17 31 37 71 73 79 97
```
阅读全文