1

別の for ループ内の for-else ループに関していくつか質問があります。以下に例を示します。

primelist = []
for p in range (2, x+1):
    print 'in first for'
    raw_input()
    for i in range(2, p):
        print 'in second for'
        if p%i == 0:
            print 'in if'
            raw_input()
            break
    else:
        print 'in else'
        raw_input()
        primelist = primelist + [p]
return primelist

ご覧のとおり、これは素数を決定し、それらを後で取得できるようにリストに格納するためのものです。したがって、私の問題は最初の for ループにあります。プログラムを実行すると、最初の FOR ループ、ELSE、最初の FOR ループ、2 番目の FOR ループなどのように入ります。最初に ELSE にスキップするのはなぜですか? また、1000番目の数字を尋ねると、次のようになります:7919

for i in range(2, p)

と 7907 で

for i in range(2, p/2).

何故ですか?これで私を助けてくれることを願っていますが、素数アルゴリズムを実装するための他の方法を教えないでください!

4

1 に答える 1

1

Pythonrangeには終了値が含まれていません。

range[start, end)

したがって、最初の反復では、の値はp2 になりrange(2, 2)、空のリストになります。そのため、else の部分が入力されます。

print range(2, 2)  # []
于 2014-02-20T15:53:24.487 に答える