Python实现输入整数以内质数输出的求助(含输入验证代码)
高效质数判断代码整合方案
你提到的平方根优化确实是判断质数的高效方法,下面直接给你整合好输入验证与质数判断的完整代码,再拆解关键逻辑:
import math while True: x_input = input("Please enter an integer: ") try: x = int(x_input) except ValueError: print("Please enter a valid integer: ") continue break # 质数判断逻辑 def is_prime(n): # 小于2的数不是质数 if n < 2: return False # 2是唯一的偶质数 if n == 2: return True # 偶数(除2外)直接排除 if n % 2 == 0: return False # 计算平方根,只需要检查到sqrt(n)即可 sqrt_n = math.isqrt(n) # 从3开始,步长为2(只检查奇数) for i in range(3, sqrt_n + 1, 2): if n % i == 0: return False return True # 输出结果 if is_prime(x): print(f"{x} 是质数") else: print(f"{x} 不是质数")
关键逻辑说明:
- 平方根优化:一个数若有大于其平方根的因数,必然对应一个小于平方根的因数,所以只需检查到
sqrt(n)即可,大幅减少循环次数 - 奇偶性过滤:除了2,所有偶数都不是质数,直接排除偶数后,后续只检查奇数,进一步提升效率
math.isqrt():Python 3.8+提供的整数平方根函数,返回不大于输入值的最大整数,避免浮点数精度问题
内容的提问来源于stack exchange,提问作者Juj
相关产品推荐
相关产品推荐

