You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 01:51:21