2016-10-15 7 views
-2

次の機能に問題があります。私はそれが何をしているのか理解できません。なぜなら私はPythonを初めて使うからです。助けてください。前もって感謝します。次のセグメントは何ですか - Python

def foo(limit): 
    a = [True] * limit 
    a[0] = a[1] = False 
    for (i,b) in enumerate(a): 
     if b: 
     yield i 
     for n in xrange(i*i,limit,i): 
      a[n] = False 
+6

「yield i」に間違ったインデントがあるため、構文エラーが発生します。それとは別に、正確に理解できない部分はありますか? (コード全体の説明はちょっとです) – UnholySheep

+2

[Sieve of Eratosthenes](https://en.m.wikipedia.org/wiki/Sieve_of_Eratosthenes)を使った素数生成器だと思います – furas

+0

@furas Itエラトステネスの篩に似ていますが、ここでは少し違っているように見えます:最後のfor-loopを見ると、それはi²から始まる数字を横切るだけです(通常のふるいと比べて) – jadsq

答えて

0

これはバイナリインデックスドツリーの例です。

関連する問題