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 の約数ですが、もう 1 つの約数は 3 であり、それまでにテスト済みです。

于 2013-05-16T03:24:29.270 に答える