# erastotenovo_sito.py ```python # yeehaw # budeme hledat prvocisla # fakt super # zacnu od udelani funkce ktera bere # horni hranici intervalu a vrati mi seznam # vsech prvocisel do tyto hranice # generate_primes(10) ma vyhodit [2, 3, 5, 7] def generate_primes(lim): # lim je horni hranice intervalu nums = list(range(2, lim)) # seznam vsech cisel od 2 do lim primes = [] # prazny seznam x = nums[0] # ulozime si prvni cislo # ktery je prvocislo while x < int(lim**0.5): # staci ze hledam do odmocniny z lim # teoreticky bych mohl napsat jenom # while nums[0] < lim # ale je to pomalejsi # jo a int() mi z toho udela cele cislo # coz odmocnina neni x = nums[0] # aktualizace x, ma smysl az po prvnim cyklu # prvocislo temp = [] # temporary seznam do kteryho budeme kopirovat primes.append(x) # ukladame prvocislo do seznamu prvocisel for i in nums: # prochazime nums a snazime se filtrovat # cili nechat jenom cisla ktery nejsou delitelna nove pridanym # prvocislem if i % x: # True jenom pokud `i % x` neni 0 -> nedelitelny temp.append(i) # temp nam slouzi jako budouci nums nums = temp # pozirame temp a aktualizujeme nums primes += nums # jinak by mi chybely cisla protoze jsem nahore # napsal : # while x< int(lim**0.5) # kdybych to tam nenapsal tak tohle muzu vynechat return primes # vracim cisla print(generate_primes(int(input("zadej cislo : ")))) # tohle je mozna trochu prasacky # mohl jsem to rozepsat jako : # i = int(input("zadej cislo : ")) # print(generate_primes(i)) # ale nechtelo se mi lol ```