用c++试定义一个类NUM,求100以内所有的无暇素数。所谓无暇素数是指一个两位整数,其本身是素数,其逆序数也是素数。例如,17是素数,17的逆序数是71,17和71都是素数,所以17和71都是无暇素数
时间: 2023-12-10 14:37:05 浏览: 61
查找100以内的素数;
好的,下面是用C++定义的类NUM,以及求100以内所有无暇素数的代码:
```c++
#include <iostream>
using namespace std;
class NUM {
private:
int value; // 存储数值
public:
NUM(int n) {
value = n;
}
int get_value() {
return value;
}
NUM get_reverse() {
int n = value;
int reversed = 0;
while (n > 0) {
reversed = reversed * 10 + n % 10;
n /= 10;
}
return NUM(reversed);
}
bool is_prime() {
if (value < 2) return false;
for (int i = 2; i * i <= value; i++) {
if (value % i == 0) return false;
}
return true;
}
};
int main() {
for (int i = 11; i < 100; i++) {
NUM num(i);
if (num.is_prime() && num.get_reverse().is_prime()) {
cout << num.get_value() << " ";
}
}
cout << endl;
return 0;
}
```
首先定义了一个名为NUM的类,里面包含了存储数值、获取数值、获取逆序数、判断是否为素数等方法。
在main函数中,通过循环遍历11到99之间的所有两位整数,将其转化为NUM对象,判断该对象对应的数值是否为素数,并且判断该对象的逆序数对应的数值是否为素数。如果这两个条件都满足,则输出该对象对应的数值。
这样就可以求出100以内所有的无暇素数了。
阅读全文