Liczby pierwsze. Wcięcia

Liczby pierwsze. Wcięcia
MA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 72
0

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

Kopiuj
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ć?
AN
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 989
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

MA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 72
0

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

SI
  • Rejestracja: dni
  • Ostatnio: dni
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ć.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.