Príklad na kontrolu, či je celé číslo (zadané používateľom) prvočíslo alebo či sa nepoužíva pre cyklus, a ak … else.
Aby ste pochopili tento príklad, mali by ste mať znalosti nasledujúcich programovacích tém C ++:
- C ++ ak, ak … inak a Vnorené, ak … inak
- C ++ pre slučku
- Príkaz C ++ na prerušenie a pokračovanie
Kladné celé číslo, ktoré je deliteľné iba 1 a samo o sebe je známe ako prvočíslo.
Napríklad: 13 je prvočíslo, pretože je deliteľné iba 1 a 13, ale 15 nie je prvočíslo, pretože je deliteľné 1, 3, 5 a 15.
Poznámka: 0 a 1 nie sú prvočísla.
Príklad: Skontrolujte 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ýkon
Zadajte kladné celé číslo: 29 29 je prvočíslo.
Tento program vezme od používateľa kladné celé číslo a uloží ho do premennej n.
Všimnite si, že boolovská premenná isPrime je inicializovaná true
na začiatku programu.
Pretože 0 a 1 nie sú prvočísla, najskôr skontrolujeme, či je vstupné číslo jedno z týchto čísel alebo nie. Ak je vstupné číslo 0 alebo 1 , potom je hodnota isPrime nastavená na false
.
Inak počiatočná hodnota isPrime zostáva nezmenená a for
vykoná sa slučka, ktorá kontroluje, či je číslo zadané používateľom dokonale deliteľné číslom i alebo nie.
for (i = 2; i <= n / 2; ++i) ( if (n % i == 0) ( isPrime = false; break; ) )
for
Slučka beží z i == 2
k i <= n / 2
a zvyšuje hodnotu aj o 1 s každou iterácií.
Smyčka končí na, i == n / 2
pretože nemôžeme nájsť žiadny faktor pre n nad toto číslo n / 2
. Takže akékoľvek ďalšie iterácie n / 2
sú nadbytočné.
Ak je číslo zadané používateľom dokonale deliteľné číslom i, potom je parameter isPrime nastavený na hodnotu false
a číslo nebude prvočíslom.
Ak ale vstupné číslo nie je úplne deliteľné číslom i v celej slučke, znamená to, že vstupné číslo je deliteľné iba číslom 1 a týmto číslom samotným.
Dané číslo je teda prvočíslo.
V prípade n == 2
, že sa for
slučka nespustí a zostane hodnota isPrime true
.