Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Pouze tento týden sleva až 80 % na e-learning týkající se Swiftu. Zároveň využij výhodnou slevovou akci až 30 % zdarma při nákupu e-learningu - více informací.
discount 30 + hiring
Avatar
Peter Kristín:22.5.2018 19:50

Ahojte,
snazim sa vypocitat prvocisla, problem je, ze je to strasne pomale, tak sa chcem spytat ci na to idem uplne zle ...
Vopred vdaka

cislo = 100000
prvocisla = []
for i in range(1, cislo + 1):
if ((2 ** i) - 2) % i == 0:
prvocisla.append(i)

 
Odpovědět
22.5.2018 19:50
Avatar
Peter Kristín:22.5.2018 20:06

update:
vylucil som parne cisla ...

cislo = 100000
prvocisla = []
for i in range(1, cislo + 1, 2):
if ((2 ** i) - 2) % i == 0:
prvocisla.append(i)

 
Nahoru Odpovědět
22.5.2018 20:06
Avatar
 
Nahoru Odpovědět
22.5.2018 21:28
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:23.5.2018 8:03

Musis zacit uvazovat logicteji :)
Rikas, ze vyloucis suda.
range(1, cislo + 1, 2)
Ano, tohle vylouci suda. Ale, je nejaky duvod, proc tam takovou podminku vubec davat? Nebylo by jednodussi
n = i * 2 + 1
A nebylo by jednodussi misto nasobeni dvojkou pouzit bitovou rotaci?
n = (i >> 1) + 1
A nebylo by lepsi misto range pouzit normalni cyklus, jako while?

# https://www.tutorialspoint.com/python/python_while_loop.htm
#!/usr/bin/python

count = 0
while (count < 9):
   print 'The count is:', count
   count = count + 1

print "Good bye!"

Co dela range? Vytvori array, ktera obsahuje cisla od-do. Proc vytvaret array? Mozna, ze python uz ma takovou array predpripravenou a jen na ni presunuje ukazatel, nezkoumal jsem vnitrni funkcionalitu.
Jenze pozor. Netlacit do while funkce, pokud tam nemusi byt. Stava se, ze nekdo tam prida treba i<strlen(str). Ono to funguje, ale pokazde znovu a znovu pocita delku retezce. Coz je zbytecne, pokud se celou smycku nemeni :) Zbytecna brzda navic. To ale v tomhle pripade nehrozi.

Editováno 23.5.2018 8:04
 
Nahoru Odpovědět
23.5.2018 8:03
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Jiří Havelka:23.5.2018 8:07

Hledání prvočísel je obecně pomalá záležitost, existují ale rychlejší postupy.
třeba https://cs.wikipedia.org/…vo_s%C3%ADto

Editováno 23.5.2018 8:08
 
Nahoru Odpovědět
23.5.2018 8:07
Avatar
Odpovídá na Peter Mlich
Peter Kristín:23.5.2018 15:10

Peter Mlich: nie uplne rozumiem ...
Bitovu rotaciu ani neviem ci python pozna, nasobenie 2kou tam myslim nemam, 2 ** i je umocnenie 2 na i-tu.
Kazdopadne skusim inu metodu, napr. to eratosove sito.

 
Nahoru Odpovědět
23.5.2018 15:10
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:24.5.2018 7:37

Ok. Informatiku nestuduji. Jen jsem chtel rici, je liche cislo dostanu i bez slozitych mat. operaci, jako

n = (i >> 1) + 1 # = i * 2 + 1 pro i=0,1,2...(max<<1) => 1, 3, 5, ...
 
Nahoru Odpovědět
24.5.2018 7:37
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.