From ba70f00735b36a7db82ed07c56f9840b5fd9a1d1 Mon Sep 17 00:00:00 2001 From: "Dawid J. Kubis" Date: Tue, 29 Oct 2019 20:59:22 +0100 Subject: [PATCH] lol jsem na sebe pysnej --- 4/bigdick_sito.py | 13 +++++++++++ 4/erastotenovo_sito.py | 50 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 4/bigdick_sito.py diff --git a/4/bigdick_sito.py b/4/bigdick_sito.py new file mode 100644 index 0000000..cb68a3f --- /dev/null +++ b/4/bigdick_sito.py @@ -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 diff --git a/4/erastotenovo_sito.py b/4/erastotenovo_sito.py index e69de29..c60294c 100644 --- a/4/erastotenovo_sito.py +++ b/4/erastotenovo_sito.py @@ -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