Program C ++ ke kontrole, zda je číslo prvočíslo nebo ne

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 truena 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 forsmyč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; ) ) 

forSmyčka běží z i == 2k i <= n / 2a zvyšuje hodnotu i o 1 s každou iterací.

Smyčka končí na, i == n / 2protože nemůžeme najít žádný faktor pro n nad číslo n / 2 . Jakékoli další iterace n / 2jsou tedy nadbytečné.

Pokud je číslo zadané uživatelem dokonale dělitelné číslem i, je isPrime nastaveno na falsea čí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 forsmyčka nespustí, zůstane hodnota isPrime true.

Zajímavé články...