Příklad ke kontrole, zda je celé číslo prvočíslo nebo nepoužívá smyčku for, a pokud… else. Pokud číslo není prvočíslo, je ve výstupu vysvětleno, proč nejde o prvočíslo.
Abychom porozuměli tomuto příkladu, měli byste znát následující témata programování v Pythonu:
- Příkaz Python if … else
- Python pro smyčku
- Python se rozbije a pokračuje
Kladné celé číslo větší než 1, které nemá žádné jiné faktory kromě 1 a samotné číslo se nazývá prvočíslo. 2, 3, 5, 7 atd. Jsou prvočísla, protože nemají žádné další faktory. Ale 6 není prvočíslo (je kompozitní), neboť 2 x 3 = 6
.
Zdrojový kód
# Program to check if a number is prime or not num = 407 # To take input from the user #num = int(input("Enter a number: ")) # prime numbers are greater than 1 if num> 1: # check for factors for i in range(2,num): if (num % i) == 0: print(num,"is not a prime number") print(i,"times",num//i,"is",num) break else: print(num,"is a prime number") # if input number is less than # or equal to 1, it is not prime else: print(num,"is not a prime number")
Výstup
407 není prvočíslo 11krát 37 je 407
V tomto programu se kontroluje proměnná num, zda je prvočíslo nebo ne. Čísla menší nebo rovná 1 nejsou prvočísla. Pokračujeme tedy pouze v případě, že počet je větší než 1.
Zkontrolujeme, zda je num přesně dělitelné libovolným číslem od 2 do num - 1. Pokud v tomto rozsahu najdeme faktor, číslo není prvočíslo. Jinak je číslo prvočíslo.
Můžeme snížit rozsah čísel, kde hledáme faktory.
Ve výše uvedeném programu je náš rozsah vyhledávání od 2 do num - 1
.
Mohli jsme použít rozsah, range(2,num//2)
nebo range(2,math.floor(math.sqrt(num)))
. Druhá řada je založena na skutečnosti, že složené číslo musí mít faktor menší než druhá odmocnina tohoto čísla. Jinak je číslo prvočíslo.
Ve výše uvedeném zdrojovém kódu můžete změnit hodnotu proměnné num a zkontrolovat, zda je číslo prvočíslo pro jiná celá čísla.