Příklad ke kontrole, zda celé číslo (zadané uživatelem) je prvočíslo nebo nepoužívá smyčku for a if… else.
Abychom porozuměli tomuto příkladu, měli byste znát následující programovací témata C ++:
- C ++ if, if … else a Nested if … else
- C ++ pro smyčku
- Příkaz C ++ break and continue
Kladné celé číslo, které je dělitelné pouze 1 a samo o sobě je známé jako prvočíslo.
Například: 13 je prvočíslo, protože je dělitelné pouze 1 a 13, ale 15 není prvočíslo, protože je dělitelné 1, 3, 5 a 15.
Poznámka: 0 a 1 nejsou prvočísla.
Příklad: Zkontrolujte prvočíslo
#include using namespace std; int main() ( int i, n; bool isPrime = true; cout <> n; // 0 and 1 are not prime numbers if (n == 0 || n == 1) ( isPrime = false; ) else ( for (i = 2; i <= n / 2; ++i) ( if (n % i == 0) ( isPrime = false; break; ) ) ) if (isPrime) cout << n << " is a prime number"; else cout << n << " is not a prime number"; return 0; )
Výstup
Zadejte kladné celé číslo: 29 29 je prvočíslo.
Tento program vezme od uživatele kladné celé číslo a uloží jej do proměnné n.
Všimněte si, že boolovská proměnná isPrime je inicializována true
na začátek programu.
Protože 0 a 1 nejsou prvočísla, nejprve zkontrolujeme, zda je vstupní číslo jedno z těchto čísel nebo ne. Pokud je vstupní číslo 0 nebo 1 , pak je hodnota isPrime nastavena na false
.
Jinak je počáteční hodnota isPrime ponechána beze změny a provede se for
smyčka, která kontroluje, zda je číslo zadané uživatelem dokonale dělitelné číslem i nebo ne.
for (i = 2; i <= n / 2; ++i) ( if (n % i == 0) ( isPrime = false; break; ) )
for
Smyčka běží z i == 2
k i <= n / 2
a zvyšuje hodnotu i o 1 s každou iterací.
Smyčka končí na, i == n / 2
protože nemůžeme najít žádný faktor pro n nad číslo n / 2
. Jakékoli další iterace n / 2
jsou tedy nadbytečné.
Pokud je číslo zadané uživatelem dokonale dělitelné číslem i, je isPrime nastaveno na false
a číslo nebude prvočíslem.
Pokud ale vstupní číslo není v celé smyčce dokonale dělitelné číslem i, znamená to, že číslo vstupu je dělitelné pouze číslem 1 a tímto číslem samotným.
Dané číslo je tedy prvočíslo.
V případě n == 2
, že se for
smyčka nespustí, zůstane hodnota isPrime true
.