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

Python如何筛选三位数素数列表中各位数字乘积等于用户输入的元素

实现步骤

1 修复原有素数生成代码错误

原有素数生成代码存在两个问题:

  • 内层else缩进错误,当前对齐到if (num % i) == 0:分支,会误将大量非素数加入列表,正确应该和内层for循环对齐
  • 你给出的numere_prime结构多了一层嵌套,实际是一维列表

修正后的素数生成代码:

numere_prime = []
for num in range(100, 1000):
    if num > 1:
        for i in range(2, int(num**0.5) + 1): # 优化为遍历到平方根即可,大幅提升计算效率
            if (num % i) == 0:
                break
        else:
            numere_prime.append(num)

2 实现乘积筛选功能

可以直接用累乘计算三位数各位的乘积,再和用户输入值对比筛选,完整实现代码如下:

# 获取用户输入,转换为整数
target = int(input("请输入目标乘积值:"))
result = []

for elem in numere_prime:
    # 拆分三位数的各位数字
    hundreds = elem // 100
    tens = (elem // 10) % 10
    units = elem % 10
    # 计算各位乘积
    product = hundreds * tens * units
    # 匹配目标值则加入结果
    if product == target:
        result.append(elem)

print(result)

如果需要沿用你已写的字符串拆分数字逻辑,也可以用循环累乘的方式:

target = int(input("请输入目标乘积值:"))
result = []

for elem in numere_prime:
    digits = [int(x) for x in str(elem)]
    product = 1
    for n in digits:
        product *= n
    if product == target:
        result.append(elem)

print(result)

3 测试效果

当输入值为9时,运行代码输出结果为[191, 313, 331, 911],和你给出的示例完全一致。

内容的提问来源于stack exchange,提问作者Vadim Paduraru

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 11:09:02