如何修复质数三角形打印问题?代码输出含合数而非目标质数
修复质数三角形打印代码
原代码问题分析
- 质数判断逻辑错误:仅检查数字能否被2整除,若不能则直接判定为质数,忽略了3、5等其他因数,导致9、25这类合数被误判。
- 重复初始化变量:每次外层循环都重置
n=3,无法持续生成后续的质数,行数增加时无法正确获取下一个质数。 - 打印格式问题:每行末尾会多一个多余的空格。
修复后的代码
def is_prime(num): if num < 2: return False for k in range(2, int(num ** 0.5) + 1): if num % k == 0: return False return True # 生成足够的质数列表 primes = [] current = 2 # 这里15对应range(15)的行数需求,可根据实际需要调整 while len(primes) < 15: if is_prime(current): primes.append(current) current += 1 # 打印质数三角形 # 原代码是range(5)对应5行,若要15行则改为range(1,16) for i in range(1, 6): print(' '.join(map(str, primes[:i])))
代码说明
- 质数判断函数
is_prime:通过检查数字能否被2到其平方根之间的数整除,准确判断质数。 - 预生成质数列表:提前生成足够数量的质数,避免重复计算,提升运行效率。
- 格式化打印:通过切片获取每行需要的质数,用
join方法拼接输出,避免出现末尾多余空格。
内容的提问来源于stack exchange,提问作者Vishal Kumar Paswan
相关产品推荐
相关产品推荐

