有人可以解释
for k in range(2, 1+int(sqrt(i+1))):
对我来说?我很难理解如何
1+int(sqrt(i+1)
真的有效。
我理解1
正被添加到i
,并且它是平方根,并且必须是整数。但我不理解如何实现整个计划的目标
from math import sqrt
count = 1
i = 1
while count < 1000:
i += 2
for k in range(2, 1+int(sqrt(i+1))):
if i%k == 0:
break
else:
# print(i) ,
count += 1
# if count%20==0: print ""
print i
其目标是找到第1000个素数。
答案 0 :(得分:6)
如果要测试一个数字的素数,那么测试所有因子直到sqrt(数字)就足够了,因为任何高于sqrt(数字)的因子都有一个低于sqrt(数字)的相应因子。
e.g。如果你想测试36是否是素数,那么测试最多6就足够了 - 例如,12是36的因子,但是它的另一个因子是3,你已经测试过了。