1

この python プライム チェック関数についてちょっとした質問があります。これは本当にばかげていますが[2]、中の は何をfor n in [2]しますか?

素数をチェックする式は理解できますが、問題ありませんが、それが何のためにあるのかわかりません[2]

から: http://en.wikibooks.org/wiki/Python_and_Math

from math import ceil
def prime(input):
    for n in [2] + range(3, int(ceil(input**0.5)), 2):
        if input%n == 0:
            return False
    return True

私の愚かな質問に答えてくれてありがとう。

4

1 に答える 1

1

これは単にリストの追加です:

>>> range(3, 10, 2)
[3, 5, 7, 9]
>>> [2] + range(3, 10, 2)
[2, 3, 5, 7, 9]

つまり、2 で割り切れるかどうかをチェックしたいのですが、明らかに 4、6、8 で割り切れるかどうかをチェックする必要はありません。

ところで、この関数は壊れています - それは返されprime(2) == Falseprime(1) == Trueどちらも間違っています。

于 2013-04-23T15:16:42.970 に答える