为什么这样:
def p3(x):
primes = [2]
for a in range(3, x, 2):
sqrt = a ** 0.5
for b in range(3, sqrt, 2):
if a % b == 0:
break
if a % b != 0:
primes.append(a)
return primes
print(p3(19))
返回:
TypeError: 'float' object cannot be interpreted as an integer, line 5
这是什么意思,我该如何纠正呢?
提前谢谢,
LewisC
答案 0 :(得分:6)
因为sqrt
是一个浮点数而range
需要严格的整数。
你可能想要这个:
for b in range(3, int(sqrt) + 1, 2):
答案 1 :(得分:0)
sqrt
的类型为float
,因此无法与range()
一起使用:
>>> range(1, 2.0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'float' object cannot be interpreted as an integer
要修复,请将其转换为整数:
sqrt = int(a ** 0.5)