next up previous contents index
suivant: Les algorithmes donnant la monter: La liste des diviseurs précédent: Le nombre de diviseurs   Table des matières   Index

L'algorithme sur un exemple

Déscription de l'algorithme sur un exemple :
n = 360 = 23*32*5
n a donc (3+1)*(2+1)*(1+1)=24 diviseurs.
On les écrit en faisant varier le triplet représentant les exposants avec l'ordre :
(0,0,0),(1,0,0),(2,0,0),(3,0,0),
(0,1,0),(1,1,0),(2,1,0),(3,1,0),
(0,2,0),(1,2,0),...,
(0,2,1),(1,2,1),(2,2,1),(3,2,1))
On a (a1,$ \beta$,$ \gamma$) < (b1, b2, b3) si :
$ \gamma$ < b3 ou
$ \gamma$ = b3 et $ \beta$ < b2 ou
$ \gamma$ = b3 et $ \beta$ = b2 et a1 < b1.
On obtient les 4*3*2=24 diviseurs de 360 :
1,2,4,8,3,6,12,24,9,18,36,72,5,10,20,40,15,30,60,120,45,90,180,360.
que l'on peut écrire en le tableau suivant :
1,2,4,8 (les puissances de 2)
3,6,12,24 (3*les puissances de 2)
9,18,36,72 (3*3*les puissances de 2)
5,10,20,40 (5*les puissances de 2)
15,30,60,120 (5*3*les puissances de 2)
45,90,180,360 (5*3*3*les puissances de 2).
Comment obtient-on la liste des diviseurs de a$\scriptstyle \alpha$*b$\scriptstyle \beta$*c$\scriptstyle \gamma$ à partir de la liste L1 des diviseurs de a$\scriptstyle \alpha$*b$\scriptstyle \beta$ ?
Il suffit de rajouter à L1 la liste L2 constituée par :
$ \tt c*L1,...,c^\gamma*L1$
Dans le programme cette liste de diviseurs (L1) sera donc constituée au fur et à mesure au moyen d'une liste (L2) qui correspond au parcours de l'arbre.
On initialise L1 avec {1}, puis on rajoute à L1 la liste L2 formée par :
$ \tt a*L1,...,a^\alpha*L1$.
Puis on recommence avec le diviseur suivant :
on rajoute à L1 la liste L2 formée par $ \tt b*L1,...,b^\beta*L1$ etc...
next up previous contents index
suivant: Les algorithmes donnant la monter: La liste des diviseurs précédent: Le nombre de diviseurs   Table des matières   Index
Documentation de giac écrite par Renée De Graeve