Liczby pierwsze. Wcięcia

0

Mam tutaj taki oto program do generowania liczb pierwszych:```

def primes(limit):
    tab=[]      
    for i in range(2,limit):    
        for j in tab:           
            if i % j == 0:
                break
        else:
            tab.append(i)        
    return tab
print(primes(10))
```
I nurtuje mnie pytanie, dlaczego else nie jest pod if tylko pod for (chodzi mi o tabulacje). Czy ktoś mógłby mi to wytłumaczyć?
0

Bo słowo kluczowe else dotyczy również pętli for. Chodzi o to, że możesz z niego korzystać w ifach lub w pętli. W przypadku pętli kod pod else wykona się tylko gdy pętla niezostanie przerwana słowem break. Innymi słowy else mogłoby brzmieć równie dobrze nobreak

0

I dlaczego dla limit=1000000 wyskakuje błąd?

0

Mi działa, aczkolwiek strasznie wolno bo robisz masę zbędnych porównań, zajrzyj do swojego wcześniejszego tematu o pierwszych, swoją drogą tam też powinieneś się o to pytać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1