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

如何用Python获取N个质数而非输入值以内的质数

解决方案

你的核心问题是原代码只遍历到输入值的前一个数(比如输入10就只检查到9),自然只能找到该范围内的质数,而非指定数量的质数。要实现获取前N个质数,需要持续检查递增的数字,直到收集到足够数量的质数,以下是修正后的代码:

def calculate_n_prime():
    n_numbers = int(input("How many prime numbers would you like to see? "))
    prime_count = 0
    num = 2  # 从第一个质数开始检查
    
    while prime_count < n_numbers:
        is_prime = True
        # 优化:只需检查到num的平方根,减少循环次数
        for i in range(2, int(num**0.5) + 1):
            if num % i == 0:
                is_prime = False
                break
        if is_prime:
            print(num, end="-")
            prime_count += 1
        num += 1

if __name__ == "__main__":
    calculate_n_prime()

关键修改说明

  • 用while循环替代原有的for range循环:不再限制检查的数字范围,而是持续递增数字,直到找到的质数数量达到用户输入的N
  • 新增prime_count计数器:记录已找到的质数数量,达到目标后终止循环
  • 优化质数判断逻辑:检查到num的平方根即可(如果num有大于平方根的因数,必然对应一个小于平方根的因数),提升效率

测试输入10时,会输出2-3-5-7-11-13-17-19-23-29-,符合你的预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 14:11:29