Algorithme PanaMaths → Diviseurs positifs d`un entier naturel non nul

publicité
Algorithme PanaMaths
Æ Diviseurs positifs d’un entier naturel non nul
Introduction
L’algorithme présenté ici est un petit algorithme classique et très pratique permettant
d’obtenir la liste des diviseurs positifs d’un entier naturel non nul n.
Les diviseurs positifs d’un tel entier appartiennent à l’ensemble {1, 2, 3, 4, ..., n − 1, n} = a1; n b .
Un entier i de cet ensemble est un diviseur de n si, et seulement si, le reste de la division
euclidienne de n par k est nul. En balayant l’ensemble a1; n b et en testant, pour tout élément i
de cet ensemble, si le reste associé de la division euclidienne de n par i est nul, on obtiendra
l’ensemble des diviseurs de n.
Le cœur de l’algorithme est donc essentiellement composé d’une boucle et d’un test de
nullité. Le reste de la division euclidienne peut être obtenu de diverses façons, AlgoBox le
fournit directement (fonction « % »).
Les variables utilisées sont :
N : l’entier naturel strictement positif dont on cherche les diviseurs positifs.
I : l’entier courant (variant de 1 à N).
R : le reste de la division euclidienne de N par I (résultat de N%I sous AlgoBox).
PanaMaths
[1-4]
Mai 2012
www.panamaths.net
Diviseurs positifs d’un entier naturel non nul
Organigramme
DEBUT
i=0
Lire n
i=i+1
Afficher i
i divise n ?
Oui
Non
Oui
?
Non
FIN
Au niveau de la mise en œuvre de cet algorithme simple, on peut ajouter à la lecture de la
variable n un test pour garantir, avant d’entrer dans la boucle principal, que le nombre saisi est
bien un entier naturel non nul (cf. l’algorithme AlgoBox fourni ci-après).
PanaMaths
[2-4]
Juillet 2012
www.panamaths.net
Diviseurs positifs d’un entier naturel non nul
L’algorithme AlgoBox
Voici l’algorithme que vous pouvez tester en ligne :
Diviseurs
-
26.07.2012
******************************************
Cet algorithme donne tous les diviseurs positifs d'un entier
naturel N strictement positif donné.
******************************************
1
VARIABLES
2
N EST_DU_TYPE NOMBRE
3
I EST_DU_TYPE NOMBRE
4
R EST_DU_TYPE NOMBRE
5
DEBUT_ALGORITHME
6
//Première saisie de la valeur de la variable N
7
AFFICHER "Saisir la valeur de l'entier naturel non nul
N."
8
LIRE N
9
TANT_QUE (N<=0 OU N-floor(N)!=0 OU N>200000) FAIRE
10
DEBUT_TANT_QUE
11
AFFICHER "ATTENTION ! N doit être un entier nature non
nul inférieur ou égal à 200 000 !"
12
LIRE N
13
FIN_TANT_QUE
14
//La valeur de la variable N est valide. On démarre la
recherche des diviseurs.
15
AFFICHER "Les diviseurs de "
16
AFFICHER N
17
AFFICHER " sont : "
18
POUR I ALLANT_DE 1 A N
19
DEBUT_POUR
20
R PREND_LA_VALEUR N%I
21
SI (R==0) ALORS
22
DEBUT_SI
23
AFFICHER " "
24
AFFICHER I
25
FIN_SI
26
FIN_POUR
27 FIN_ALGORITHME
PanaMaths
[3-4]
Juillet 2012
www.panamaths.net
Diviseurs positifs d’un entier naturel non nul
Remarques :
•
Quelques commentaires ont été ajoutés pour rendre l’algorithme plus lisible.
•
Un test triple est effectué sur la variable N puisque celle-ci doit être :
o Strictement supérieure à 0.
o Entière (N–floor(N) correspond à la différence entre N et sa partie entière et est
nulle si, et seulement si, N est entière).
o Inférieure ou égale à 200 000 tout simplement parce que la version courante
d’AlgoBox impose cette limitation au niveau des boucles « TANT QUE … »
(200 000 itérations au maximum et ici, la variable N correspond exactement au
nombre d’itérations effectuées).
Les diviseurs sont affichés au fur et à mesure de leur obtention.
•
PanaMaths
[4-4]
Juillet 2012
Téléchargement