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