Exemple pour vérifier si un entier (saisi par l'utilisateur) est un nombre premier ou non en utilisant la boucle for et if… else.
Pour comprendre cet exemple, vous devez avoir la connaissance des rubriques de programmation C ++ suivantes:
- C ++ if, if… else et Nested if… else
- C ++ pour Loop
- Instruction C ++ break and continue
Un entier positif qui n'est divisible que par 1 et est lui-même appelé nombre premier.
Par exemple: 13 est un nombre premier car il n'est divisible que par 1 et 13 mais 15 n'est pas un nombre premier car il est divisible par 1, 3, 5 et 15.
Remarque: 0 et 1 ne sont pas des nombres premiers.
Exemple: vérifier le nombre premier
#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; )
Production
Entrez un entier positif: 29 29 est un nombre premier.
Ce programme prend un entier positif de l'utilisateur et le stocke dans la variable n.
Notez que la variable booléenne isPrime est initialisée true
au début du programme.
Puisque 0 et 1 ne sont pas des nombres premiers, nous vérifions d'abord si le nombre d'entrée est l'un de ces nombres ou non. Si le nombre d'entrée est 0 ou 1 , la valeur de isPrime est définie sur false
.
Sinon, la valeur initiale de isPrime reste inchangée et la for
boucle est exécutée, ce qui vérifie si le nombre saisi par l'utilisateur est parfaitement divisible par i ou non.
for (i = 2; i <= n / 2; ++i) ( if (n % i == 0) ( isPrime = false; break; ) )
La for
boucle va de i == 2
à i <= n / 2
et augmente la valeur de i de 1 à chaque itération.
La boucle se termine à i == n / 2
parce que nous ne pouvons trouver aucun facteur pour n au-delà du nombre n / 2
. Ainsi, toute itération au n / 2
- delà est redondante.
Si le nombre entré par l'utilisateur est parfaitement divisible par i, alors isPrime est mis à false
et le nombre ne sera pas un nombre premier.
Mais si le nombre d'entrée n'est pas parfaitement divisible par i sur l'ensemble de la boucle, cela signifie que le nombre d'entrée n'est divisible que par 1 et ce nombre lui-même.
Donc, le nombre donné est un nombre premier.
Dans le cas de n == 2
, la for
boucle ne s'exécute pas et la valeur de isPrime reste true
.