3

2つのネストされたループから一度に抜け出すためのさまざまな方法を見てきましたが、私のコードで最も速くて簡単なものは何ですか?

primes = [2]
for a in range(3, 500, 2):
    for b in range(2, int(a ** 0.5 + 0.5)):
        if a % b != 0:
            primes.append(a)
        if a % b == 0:
            [x for x in primes if x != a]
            # double break
4

3 に答える 3

3

ループを関数に入れて、returnキーワードを使用します。

def func(primes):
    for a in range(3, 500, 2):
        for b in range(2, int(a ** 0.5 + 0.5)):
            if a % b != 0:
                primes.append(a)
            if a % b == 0:
                [x for x in primes if x != a]
                return

primes = [2]
func(primes)

これは、プログラマーにモジュール化されたコードを書かせるときに良いことになる傾向があります。

于 2013-03-02T12:36:05.300 に答える
0

ダブルループを関数としてリファクタリングし、を使用returnしてブレークアウトします。

于 2013-03-02T12:36:26.067 に答える
0

関数を使用したくない場合は、変数を使用できます。ここにありますflag

  primes = [2]
    flag = 0
    for a in range(3, 500, 2):
        for b in range(2, int(a ** 0.5 + 0.5)):
            if a % b != 0:
                primes.append(a)
            if a % b == 0:
                [x for x in primes if x != a]
                flag = 1
                break
        if flag:
            break
于 2013-03-02T12:54:59.357 に答える