lol jsem na sebe pysnej

pull/1/head
Dawid J. Kubis 5 years ago
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…
Cancel
Save