
rychla rada. vypocet prvocisel. python3
user napise hornu hranicu mnoziny prirodzenych cisel a program musi vypocitat vsetky prvocisla od zaciatku. dostal som sa potialto:
inp = int(input('write number for all primes up to(included): '))
divisor = 2
primes = []
for num in range(2, inp+1):
while divisor < num:
if num % divisor == 0:
continue
else:
divisor = divisor + 1
print(primes)
ale toto neviem kam dat, skusal som vselijako, neislo to:
if divisor == num:
primes.append(num)
za predpokladu ze by while bolo <=
Ten tvůj algoritmus nebude fungovat.
https://cs.wikipedia.org/wiki/Eratosthenovo_s%C3%A Dto
akoze nie
napisal som toto pre jedno cislo a funguje to spravne
Pro jedno číslo to fungovat bude. Pro více ne, divisor neustále jenom zvyšuješ.
nechapem
ten kusok kodu co je pre jedno cislo, to sa ma loopovat pre kazdy element z range(2, inp+1)
teda je to to iste, akoby user zakazdym napisal to cislo z range !
Pro každé číslo je nutné nastavit divisor zpátky na původní hodnotu, což neděláš.
vidis, to som potreboval ! dik
viete, ked chcete (radcovia)
No a až to budeš mít funkční, tak se můžeš zamyslet nad optimalizacemi.
funguje to takto
pri mojich zaciatocnickych znalostiach som rad ze to vobec mam. a optimalizacia ma netrapi a nepoznam pokrocile veci tak darmo mi ukazes ked som sa s tym este nestretol.
ale fajne to je takto, ne ?
V Pythonu sice nedělám, ale nešlo by to lépe takto?
fantazia
este by sa dalo osekat(else tam netreba). takto to vyzera vo finale:
Pravda, else už bylo zbytečné. No a teď je teda čas na ty optimalizace.
ako ? ved viac sa to uz orezat neda
a na nejake pokrocile funkcie alebo import matematickych modulov, to este neviem
ale napis co si myslel tou optimalizaciou. to chcem vidiet ako sa to da zapisat na menej riadkov !
Úprava na menší počet řádků byl pouze refaktoring. Zoptimalizovat se to dá ještě hodně, takže výsledný kód bude podstatně rychlejší.
ved hovorim, napis ked vies. preco tolke dotahovacky ?
No třeba proto, abys o tom sám popřemýšlel. Takže dám jenom otázky:
Je nutné procházet i sudá čísla?
Je nutné při hledání dělitelů čísla X procházet čísla v celém intervalu <2, X)? Nestačil by nějaký kratší?
Je nutné procházet všechna čísla z daného intervalu? Nestačila by pouze některá?
len mu dam este tip na take magicke slovicko - odmocnina.