Enoncé
Ecrire un programme qui lit un entier "n" et vérifie s'il est entier.
Solution
Comme j'ai mentionné ici, l'astuce du diviseur est un excellent moins pour faire des travaux dirigés sur la notion de la variable booléenne. Cette dernière est utilisée très souvent dans les boucles de type "Tant que" et "Répéter jusqu'à" comme une condition d'arrêt (pour sortir de la boucle).
Ainsi, les auteurs et les enseignants tentent de mettre cette "petite" astuce de diviseur dans des boucles.
Dans le cas de cet exercice, l'idée est de vérifier s'il est premier ou pas, c'est à dire, de rechercher un autre diviseur de "n" que "1" et "n" lui même. Cela implique un parcours des valeurs de 2 à n - 1 (l'optimisation n'est pas vraiment ma priorité actuellement) et voir si on peut trouver un diviseur.
On sort de la boucle si :
La présence de deux conditions dans la définition de la boucle nous oblige à faire une vérification pour savoir "pourquoi avons nous quitter la boucle ?".Ecrire un programme qui lit un entier "n" et vérifie s'il est entier.
Solution
Comme j'ai mentionné ici, l'astuce du diviseur est un excellent moins pour faire des travaux dirigés sur la notion de la variable booléenne. Cette dernière est utilisée très souvent dans les boucles de type "Tant que" et "Répéter jusqu'à" comme une condition d'arrêt (pour sortir de la boucle).
Ainsi, les auteurs et les enseignants tentent de mettre cette "petite" astuce de diviseur dans des boucles.
Dans le cas de cet exercice, l'idée est de vérifier s'il est premier ou pas, c'est à dire, de rechercher un autre diviseur de "n" que "1" et "n" lui même. Cela implique un parcours des valeurs de 2 à n - 1 (l'optimisation n'est pas vraiment ma priorité actuellement) et voir si on peut trouver un diviseur.
On sort de la boucle si :
- On termine le parcours des valeurs de 2 à n - 1 sans trouver un diviseur et le nombre n est déclaré premier.
- On trouve un diviseur alors on n'a plus besoin de vérifier autre chose et le nombre n est déclaré non premier.
Ainsi, le code sera de la forme :
Program Premier; Var n, i : Integer; diviseur : Boolean; Begin WriteLn('Donnez un nombre à tester : '); ReadLn(n); i := 2; diviseur := false; While (not(diviseur) And (i < n)) Do Begin If (n mod i = 0) Then diviseur := true Else i := i + 1; End; {Vérification pourquoi a-t-on quitté la boucle} If (diviseur) Then WriteLn('n n''est pas un nombre premier') Else WriteLn('n est un nombre premier'); End.