这个素数计划的一部分对我来说没有意义

时间:2013-05-16 03:21:55

标签: python

有人可以解释

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个素数。

1 个答案:

答案 0 :(得分:6)

如果要测试一个数字的素数,那么测试所有因子直到sqrt(数字)就足够了,因为任何高于sqrt(数字)的因子都有一个低于sqrt(数字)的相应因子。

e.g。如果你想测试36是否是素数,那么测试最多6就足够了 - 例如,12是36的因子,但是它的另一个因子是3,你已经测试过了。