#!/usr/bin/env python3
'''
Eratosthenovo síto
----
Verze: 1, verbose
Autor: David Roesel, roesel@gmail.com
Web: http://david.roesel.cz/python
Popis:
        Vypíše prvočísla od 0 do max pomocí metody Eratosthenova síta.
        (Psáno pro Python 3.2, indentace 1x TAB.
         Kód je volně šiřitelný pod licencí Creative Commons Attribution 3.0 Unported)
'''
# Vytvářím pole 2 až MAX
max=10
max+=1
ori=list(range(2,max))
index_co_delim=1
index_kterym_delim=0
print("Začínám s polem: ", ori)# Dokud mám v listu čísla na dělitele, která nejsou prvočísly
while ori[index_kterym_delim]<=(ori[len(ori)-1]**(0.5)):
    # Dokud mám v listu čísla na dělence
    while index_co_delim<len(ori):
        # Pokud je číslo dělitelné bezezbytku...
        print("Zkouším ", ori[index_co_delim], "/", ori[index_kterym_delim]) 
        if ori[index_co_delim]%ori[index_kterym_delim]==0:
            # ...potom ho vymaž z pole
            print("Vychází beze zbytku, mažu číslo ", ori[index_co_delim])
            del ori[index_co_delim]
            print("V poli zůstává: ", ori)
        # Pokud není...
        else:
            # ...pak ho tam nech a pokračuj na další.
            index_co_delim+=1
            print("Vychází se zbytkem, zvětšuji dělence na číslo: ", ori[index_co_delim])
            print("V poli zůstává: ", ori)
    # Zvětšuji dělitele
    index_kterym_delim+=1
    # Nastavuji dělence nad dělitele, abych nevydělil prvočíslo samo sebou
    index_co_delim=index_kterym_delim+1
print("Prvočísla od ", 0, " do ", max-1, " jsou:\n", ori)

