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

如何编写接收两个整数参数并返回区间内素数列表的Python函数?

代码修正方案

现有代码存在的问题

  • 函数职责混淆:isPrime的作用应该是判断单个数字是否为素数,你当前的实现把输入的区间参数直接写到了素数判断逻辑里,逻辑完全错位
  • 素数判断逻辑错误:判断一个数x是否为素数,只需要验证2到√x之间有没有能整除x的整数,不需要遍历你输入的区间范围
  • 缺少核心业务逻辑:没有遍历两个输入整数之间的所有数、收集符合要求素数的流程

修正后可直接运行的代码

# 首先实现单独判断单个数字是否为素数的工具函数
def is_prime(x):
    if x <= 1:
        return False
    # 优化:只需要遍历到x的平方根即可,减少循环次数
    for i in range(2, int(x**0.5) + 1):
        if x % i == 0:
            return False
    return True

# 实现查询区间内所有素数的函数,接收两个整数参数,返回素数列表
def get_primes_between(start, end):
    prime_list = []
    # 处理start比end大的异常情况,保证可以兼容输入顺序颠倒的场景
    left = min(start, end)
    right = max(start, end)
    for num in range(left, right + 1):
        if is_prime(num):
            prime_list.append(num)
    return prime_list

# 原有输入逻辑,调用函数拿到结果
a, n = map(int, input("Enter a and n: ").split())
result = get_primes_between(a, n)
# 打印结果
print(result)

代码说明

  • 拆分了工具函数和业务函数,is_prime 只负责单个数字的素数判断,逻辑清晰易维护
  • 兼容输入的两个参数大小顺序问题,就算先输入大的数再输入小的数也能正常返回结果
  • 素数判断做了性能优化,循环次数比原有逻辑少很多,数值大的时候效率提升非常明显

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:54:05