Voorbeeld om te controleren of een geheel getal (ingevoerd door de gebruiker) een priemgetal is of niet met for lus en if… else-instructie.
Om dit voorbeeld te begrijpen, moet u kennis hebben van de volgende C ++ programmeeronderwerpen:
- C ++ if, if… else en genest if… else
- C ++ voor Loop
- C ++ break and continue Statement
Een positief geheel getal dat alleen deelbaar is door 1 en zelf bekend staat als priemgetal.
Bijvoorbeeld: 13 is een priemgetal omdat het alleen deelbaar is door 1 en 13, maar 15 is geen priemgetal omdat het deelbaar is door 1, 3, 5 en 15.
Opmerking: 0 en 1 zijn geen priemgetallen.
Voorbeeld: controleer priemgetal
#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; )
Uitvoer
Voer een positief geheel getal in: 29 29 is een priemgetal.
Dit programma neemt een positief geheel getal van de gebruiker en slaat dit op in de variabele n.
Merk op dat de booleaanse variabele isPrime wordt geïnitialiseerd true
aan het begin van het programma.
Omdat 0 en 1 geen priemgetallen zijn, controleren we eerst of het ingevoerde getal een van die getallen is of niet. Als het invoernummer 0 of 1 is , wordt de waarde van isPrime ingesteld op false
.
Anders blijft de oorspronkelijke waarde van isPrime ongewijzigd en wordt de for
lus uitgevoerd, die controleert of het door de gebruiker ingevoerde nummer perfect deelbaar is door i of niet.
for (i = 2; i <= n / 2; ++i) ( if (n % i == 0) ( isPrime = false; break; ) )
De for
lus loopt van i == 2
tot i <= n / 2
en verhoogt de waarde van i met 1 bij elke iteratie.
De lus eindigt op i == n / 2
omdat we geen factor voor n kunnen vinden buiten het getal n / 2
. Elke iteratie daarna n / 2
is dus overbodig.
Als het door de gebruiker ingevoerde nummer perfect deelbaar is door i, dan is isPrime ingesteld op false
en zal het nummer geen priemgetal zijn.
Maar als het ingangsnummer niet perfect deelbaar is door i gedurende de hele lus, dan betekent dit dat het ingangsnummer alleen deelbaar is door 1 en dat nummer zelf.
Het gegeven nummer is dus een priemgetal.
In het geval van mislukt n == 2
de for
lus en blijft de waarde van isPrime behouden true
.