lol jsem na sebe pysnej
parent
23631d79ff
commit
ba70f00735
@ -0,0 +1,13 @@
|
|||||||
|
# Tak tady bude nejaka cool implementace erastotenova sita
|
||||||
|
# timhle se radsi zatim netrapte
|
||||||
|
from functools import reduce
|
||||||
|
def gen_primes(lim): # kratsi nazev -> optimalizace :D
|
||||||
|
return [i for i in reduce((lambda a, b : [(i[0] if i[0]==i[1] else 0) for i in zip(a,b)]),[[(0 if ((x % i == 0) and (x != i)) else x) for x in range(2, lim)] for i in range(2, lim)]) if i != 0] # hehe :D
|
||||||
|
# lol tohle je doslova nenormalni
|
||||||
|
# prosim nepiste takovyhle kod, nikdo tomu nebude rozumet
|
||||||
|
# ale je to celkem flex
|
||||||
|
# rekneme ze mi to dost trvalo nez jsem na tohle prisel
|
||||||
|
|
||||||
|
print(gen_primes(int(input("zadej cislo : "))))
|
||||||
|
|
||||||
|
# je to dost pomalejsi nez to predtim ale je to rozhodne vic cool
|
@ -0,0 +1,50 @@
|
|||||||
|
# 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 rasove cistit
|
||||||
|
# cili nechat jenom cisla ktery nejsou delitelna nove pridanym
|
||||||
|
# prvocislem
|
||||||
|
if i % x:
|
||||||
|
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
|
Loading…
Reference in New Issue