如何用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_
相关产品推荐
相关产品推荐

