#!/usr/bin/env python3
'''
Eratosthenovo síto
----
Verze: 3, multiplication
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 (bez dotazů o dělení).
        (Psáno pro Python 3.2, indentace 1x TAB.
         Kód je volně šiřitelný pod licencí Creative Commons Attribution 3.0 Unported)
'''
max=100000 # Do jakého čísla se prvočísla vypíší?
max+=1
ori=list(range(2,max)) # Stavím si pole čísel od 2 do maxima
for i in range(2,max):          # Pro každé číslo v tomto poli,
    if ori[i-2]!=0:             # pokud je to prvočíslo,
        max_m=(len(ori)+1)/i    
        m=2                     
        while m<=max_m:         
            ori[(i*m)-2]=0      # vynuluji všechny jeho násobky
            m+=1                
ori_clean=[]                     
for f in range(0,len(ori)):
    if ori[f]!=0:               # a zbylá nenulová čísla
        ori_clean+=[ori[f]]     # vložím do nového pole.
print("Prvočísla od ", 0, " do ", max-1, " jsou:\n", ori_clean)

