Diskuze: Kdy je číslo prvočíslo?
Zobrazeno 4 zpráv z 4.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
Prvočíslo není menší než 2, to je ten první if.
Dále když vezmeme to číslo 5, tak
range(2, 5) #-> [2, 3, 4]
takže pokud by číslo 5 bylo dělitelné 2, 3 nebo 4, tak nemůže být
prvočíslem.
Chybou toho kódu je, že pro neprvočísla vypíše oba printy a pro čísla
které mají více dělitelů, vypíše několikrát
"Číslo neni prvočíslo"
Doporučuji
print("neco")
nahradit
return "neco"
Ideálně místo textu vracet True/False.
Jinak ten algoritmus se dá zeefektivnit, není třeba zkoušet celý range(2,
cislo), což je zajímavé pro větší čísla, ale to si zkus najít sám.
Co jsi nasel googlem nebo na wiki? Zkousel jsi to vubec?
Číslo je prvočíslo pokud lze dělit samo sebou a jedničkou.
To je dosti nešťastná definice prvočísla. To by splňovala všechna čísla, neboť každé číslo lze dělit jedničkou a samo sebou.
Definice prvočísla:
Prvočíslo je celé číslo, které má pouze dva dělitelé: 1 a samo sebe.
Zde je vysoce optimalizovaný algoritmus psaný v Pythonu pro zjištění, zda zadané číslo je prvočíslem.
def is_prime(n):
if n <= 1:
return False
if n <= 3:
return True
if n % 2 == 0 or n % 3 == 0:
return False
i = 5
w = 2
while i * i <= n:
if n % i == 0:
return False
i += w
w = 6 - w
return True
Zobrazeno 4 zpráv z 4.