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

0 python

有人可以解释一下

for k in range(2, 1+int(sqrt(i+1))):
Run Code Online (Sandbox Code Playgroud)

对我来说?我很难理解如何

1+int(sqrt(i+1)
Run Code Online (Sandbox Code Playgroud)

真的很有效.

我理解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
Run Code Online (Sandbox Code Playgroud)

其目标是找到第1000个素数.

Pat*_*shu 6

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

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