Python求素数代码出现IndentationError缩进错误求助
解决缩进错误并优化素数判断代码
嘿,我来帮你搞定这个问题!首先你的代码触发IndentationError是因为Python对缩进的要求非常严格——它靠缩进区分代码块,你写的for ts in range(1,100):这一行的缩进和外层代码块不匹配,大概率是混用了空格和制表符,或者缩进的空格数不一致导致的。
除了缩进问题,你的素数判断逻辑也有小bug:内层循环从1开始的话,任何数对1取模结果都是0,所以isp会直接被设为0,永远不会输出素数。下面是修复后的完整代码:
for pt in range(2, 100): # 素数从2开始,1不是素数 isp = 1 # 先标记当前数为素数 # 内层循环从2开始,到pt的平方根(包含),减少不必要的循环 for ts in range(2, int(pt**0.5) + 1): if pt % ts == 0: isp = 0 # 能被整除,说明不是素数 break # 提前退出循环,不用继续检查 if isp: print(pt)
关键修复点说明:
- 缩进统一:所有嵌套代码块都用4个空格缩进(Python官方推荐),避免混用空格和制表符,彻底解决缩进错误。
- 修正循环范围:
- 外层循环从2开始,因为1不符合素数定义(素数是大于1的自然数,且只能被1和自身整除)。
- 内层循环从2开始,跳过无意义的1的检查;循环到
int(pt**0.5)+1,因为如果一个数有大于其平方根的因子,对应的另一个因子必然小于平方根,这样能大幅减少循环次数,提升效率。
内容的提问来源于stack exchange,提问作者adhil noush
相关产品推荐
相关产品推荐

