0-100整数质数标记错位问题求助(附Python代码)
问题分析与修复
你的问题出在testPrime函数的循环逻辑上:在for循环里,只要第一次遇到不能整除的i,就直接返回True,没有完成所有可能的除数检查。比如数字9,i=2时9%2≠0,函数立刻返回True,但9实际能被3整除,不是质数,这就导致Prime标记错位。
修正后的代码
def testPrime(numTest): if numTest <= 1: return False if numTest == 2: return True # 循环检查到平方根即可,优化效率 for i in range(2, int(numTest**0.5) + 1): if numTest % i == 0: return False # 所有除数都检查完后才返回True return True def printPrimes(length): i = 0 while i <= length: if testPrime(i): print(f"{i} Prime") else: print(i) i += 1 printPrimes(100)
关键修复点
- 移除了for循环内的
else: return True,将return True移到循环结束后,确保只有当所有可能的除数都无法整除numTest时,才判定为质数。 - 优化了循环范围到
numTest的平方根,减少不必要的计算,提升函数效率。 - 调整了打印格式,在数字和Prime之间加了空格,让输出更易读。
内容的提问来源于stack exchange,提问作者gtn4270
相关产品推荐
相关产品推荐

