酷代码 AI
菜单
服务商

输入一个整数n,要求输出[1,n]范围内的所有完数。完数是一个正整数,该数恰好等于其所有不同真因子之和。例如,6、28是完数,因为6=1+2+3,28=1+2+4+7+14;而24不是完数,因为24≠1+2+3+4+6+8+12=36。

```python def find_perfect_numbers(n): def get_proper_divisors_sum(num): # 计算num的所有真因子之和 divisors_sum = 0 for i in range(1, num // 2 + 1): if num % i == 0: divisors_sum += i return divisors_sum perfect_numbers = [] for number in range(1, n + 1): if number == get_proper_divisors_sum(number): perfect_numbers.append(number) return perfect_numbers n = int(input("请输入一个整数n:")) result = find_perfect_numbers(n) print(f"[1, {n}]范围内的完数有:{result}") ``` 三条额外需要注意的逻辑点: 1. 在计算真因子时,循环上限设置为num的一半加一,因为任何大于num一半的数字不可能是num的真因子。 2. 输入需要进行有效性检查,确保输入的是正整数。 3. 对于大范围的n值,此算法效率可能较低,可以考虑优化求解真因子的方法。 [2025-01-06 18:44:10 | AI写代码神器 | 237点数解答]

相关提问
实用工具查看更多
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]
数独游戏 [娱乐类]
经典推箱子 [娱乐类]
AI摸鱼五子棋 [娱乐类]