网站首页 > 基础教程 正文
任务要求
完全数(Perfect Number)是指一个正整数,它等于除了它本身之外的所有正因数(即真因数)之和。例如:
6的真因数是1、2、3,它们的和为6,因此6是一个完全数。
28的真因数是1、2、4、7、14,它们的和为28,因此28也是一个完全数。
输出1 ~ 10000内的所有完全数。
任务分析
1.核心逻辑:对每个数字计算所有真因子并求和
2.典型完数:6、28、496(1000以内仅3个完数)
任务实现
方法一:基础双层循环法
for num in range(2, 1001):
factors = []
for i in range(1, num):
if num % i == 0:
factors.append(i)
if sum(factors) == num:
print(f"{num}: factors={factors}")
说明:
- 外层循环遍历2-1000的候选数
- 内层循环收集所有真因子存入列表
- 通过sum()函数验证因子和等于原数
方法二:列表推导式法
for num in range(2, 1001):
factors = [i for i in range(1, num) if num % i == 0]
if sum(factors) == num:
print(f"{num}: factors={factors}")
说明:
- 使用列表推导式代替内层循环
- 简化代码结构,提高可读性
- 保持算法逻辑不变
方法三:优化范围法
for num in range(2, 1001):
factors = []
# 只需遍历到num//2+1
for i in range(1, num // 2 + 1):
if num % i == 0:
factors.append(i)
if sum(factors) == num:
print(f"{num}: factors={factors}")
说明:
- 将内层循环范围缩小到num//2+1
- 减少约50%的循环次数
- 数学依据:因子成对出现,大因子必小于num/2
运行结果
6: factors=[1, 2, 3]
28: factors=[1, 2, 4, 7, 14]
496: factors=[1, 2, 4, 8, 16, 31, 62, 124, 248]
进程已结束,退出代码为 0
猜你喜欢
- 2025-03-18 如何在 Python 中进行平方:完整指南
- 2025-03-18 怎样让 Python 代码更简洁高效?这些实用技巧别错过!
- 2025-03-18 Python 一行代码帮你节省数小时工作
- 2025-03-18 实战指南:Python 代码优化的常见技巧与思路大集合
- 2025-03-18 如何使用 Python 在 Excel 中创建、更新和删除表格
- 2025-03-18 Python 最大N个数与最小N个数的和
- 2025-03-18 Python高效办公:用自动化脚本批量处理Excel
- 2025-03-18 python基础函数(Python基础函数导入)
- 2025-03-18 Python 函数秘籍(Esoterica of Python Functions)
- 2025-03-18 别再死记硬背!Python函数知识点和练习题都在这里,速来挑战!
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)