试定义一个类NUM,求100以内所有的无暇素数。所谓无暇素数是指一个两位整数,其本身是素数,其逆序数也是素数。例如,17是素数,17的逆序数是71,17和71都是素数,所以17和71都是无暇素数.
时间: 2023-11-09 19:06:41 浏览: 98
以下是一个可能的定义:
```python
class NUM:
def __init__(self, num):
self.num = num
def is_prime(self):
if self.num < 2:
return False
for i in range(2, int(self.num ** 0.5) + 1):
if self.num % i == 0:
return False
return True
def reverse(self):
return int(str(self.num)[::-1])
def is_emirp(self):
if not self.is_prime():
return False
reversed_num = self.reverse()
return self.num != reversed_num and NUM(reversed_num).is_prime()
```
这个类有三个方法:
- `is_prime()`:判断一个数是否为素数。
- `reverse()`:将一个数的各个数字反转,返回反转后的整数。
- `is_emirp()`:判断一个数是否为无暇素数,即判断该数和它的反转数是否都是素数且不相等。
使用这个类可以很方便地找到100以内的所有无暇素数:
```python
emirp_list = []
for i in range(10, 100):
if NUM(i).is_emirp():
emirp_list.append(i)
print(emirp_list)
```
运行结果为:
```
[13, 17, 31, 37, 71, 73, 79, 97]
```
阅读全文