Python仅用循环、函数、列表实现查找20个输入数中约数最多的数
Python实现:按规则筛选最多约数的数字
核心需求
仅使用循环、自定义函数、列表三类基础Python语法,实现以下逻辑:
- 读取用户输入的20个整数
- 统计每个数字的约数个数
- 筛选出约数个数最多的数字,若多个数字约数个数并列最多,选择其中数值最大的那个
- 最终输出符合要求的数字及其对应的约数个数
实现思路
- 先封装一个专门统计单个数约数个数的函数,内部仅用循环从1遍历到数字本身,逐次判断整除性累加计数,不依赖任何高阶工具。
- 用固定次数的循环读取20次输入,所有输入的整数统一存入列表存储,不使用字典、集合等其他数据结构。
- 初始化两个临时变量存储当前找到的最大约数个数、对应最优数字,遍历列表逐次比对:
- 若当前数字的约数个数大于记录的最大值,直接更新两个临时变量
- 若当前数字的约数个数和记录最大值相等,比较数字本身大小,保留数值更大的作为最优结果
- 遍历完成后直接输出结果即可,不需要额外排序操作。
完整代码
# 统计单个正整数的约数个数 def count_divisors(n): divisor_count = 0 for i in range(1, n + 1): if n % i == 0: divisor_count += 1 return divisor_count # 读取20个输入数字存入列表 number_list = [] for _ in range(20): input_num = int(input()) number_list.append(input_num) # 初始化结果基准值 max_count = count_divisors(number_list[0]) target_num = number_list[0] # 遍历列表比对更新结果 for num in number_list[1:]: current_count = count_divisors(num) if current_count > max_count: max_count = current_count target_num = num elif current_count == max_count: if num > target_num: target_num = num # 输出最终结果 print(f"约数最多的数字为{target_num},共拥有{max_count}个约数")
代码合规说明
- 用到的语法完全限定在三类范围内:自定义函数
count_divisors、所有遍历/读取逻辑均用for循环实现、输入数据仅用列表number_list存储,没有引入其他语法特性或第三方依赖。 - 边界规则完全匹配需求:约数个数为第一优先级,个数并列时自动选取数值更大的数字,不会出现错选。
- 逻辑无冗余,不需要对全量数据做排序,单次遍历即可得到结果,执行效率满足基础需求。
内容的提问来源于stack exchange,提问作者SJT1382
相关产品推荐
相关产品推荐

