0

有人可以解释

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

4

1 回答 1

6

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

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

于 2013-05-16T03:24:29.270 回答