创建 int 的子类 nevint, 并实现对象方法 set Prime_ factors 得到整数的全部质因数组成的列表。 如果是负整数,得到其相反数的全部质因数组成的列裘。不存在质因数时返回空列表。
时间: 2024-01-21 10:17:46 浏览: 23
下面是实现代码:
```python
class nevint(int):
def set_prime_factors(self):
# 如果是负数则取相反数
num = abs(self)
factors = []
# 循环判断是否能被2整除
while num % 2 == 0:
factors.append(2)
num //= 2
# 从3开始循环到num的平方根,步长为2
for i in range(3, int(num ** 0.5) + 1, 2):
while num % i == 0:
factors.append(i)
num //= i
# 如果num大于2,说明本身就是质数
if num > 2:
factors.append(num)
# 如果是负数,返回相反数的质因数列表
if self < 0:
factors = [-x for x in factors]
return factors
```
使用示例:
```python
n1 = nevint(12)
print(n1.set_prime_factors()) # [2, 2, 3]
n2 = nevint(91)
print(n2.set_prime_factors()) # [7, 13]
n3 = nevint(-24)
print(n3.set_prime_factors()) # [-2, -2, -2, 3]
```