Program v C ++ na kontrolu, či je číslo prvočíslo alebo nie

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á truena 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 forvykoná 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; ) ) 

forSlučka beží z i == 2k i <= n / 2a zvyšuje hodnotu aj o 1 s každou iterácií.

Smyčka končí na, i == n / 2pretože nemôžeme nájsť žiadny faktor pre n nad toto číslo n / 2 . Takže akékoľvek ďalšie iterácie n / 2sú nadbytočné.

Ak je číslo zadané používateľom dokonale deliteľné číslom i, potom je parameter isPrime nastavený na hodnotu falsea čí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 forslučka nespustí a zostane hodnota isPrime true.

Zaujímavé články...