求正整数2和n的s所有完全数python
时间: 2024-02-03 12:15:13 浏览: 66
完全数是指一个正整数的所有因子(不包括它本身)之和等于这个数本身的数。下面是求正整数2和n的所有完全数的Python代码:
```python
def get_factors(num):
"""
获取一个数的所有因子
"""
factors = [1]
for i in range(2, int(num**0.5)+1):
if num % i == 0:
factors.append(i)
factors.append(num//i)
if int(num**0.5)**2 == num:
factors.append(int(num**0.5))
return factors
def get_perfect_numbers(n):
"""
获取2到n之间的所有完全数
"""
perfect_nums = []
for num in range(2, n+1):
factors = get_factors(num)
if sum(factors) == num:
perfect_nums.append(num)
return perfect_nums
# 测试
print(get_perfect_numbers(10000))
```
这段代码中,`get_factors`函数用于获取一个数的所有因子,`get_perfect_numbers`函数则用于获取2到n之间的所有完全数。其中,`get_factors`函数中,`range(2, int(num**0.5)+1)`用于遍历2到num开方后的整数范围内的所有数,如果num能够被该数整除,则加入因子列表中。同时,为了避免重复,我们只需要将num/i得到的商加入因子列表中即可。最后,如果num是一个完全平方数,则需要将其平方根加入因子列表中。
在`get_perfect_numbers`函数中,我们遍历2到n之间的每一个数,获取其因子列表,并判断因子之和是否等于该数本身。如果是,则将该数加入完全数列表中。最后,返回完全数列表。
阅读全文