next up previous
suivant: Petit théorème de Fermat monter: Deuxième exemple d'application en précédent: Tests et cribles

Décomposition des entiers en produit de nombres premiers

Pour obtenir un programme donnant la décomposition d'un entier donné, nous allons utiliser la procédure Erato mise au point précédemment qui renvoie la liste des entiers premiers inférieurs à un nombre donné.

$ »$ decompo:=proc(n)

$ »$ local L,l,D,N;

$ »$ begin

$ »$ D:=[]: L:=Erato(n): l:=op(L): N:=n:

# l est l'ensemble des nombres premiers inférieurs à n #

$ »$ while not(contains(l,N)) do

# tant que N n'est pas premier #

$ »$ for k from 1 to nops(L) do

# nops(L)= nb d'éléments de L #

$ »$ if N mod L[k]=0 then D:=D.[L[k]]; # si le kième premier divise N, on le rajoute à la liste#

$ »$ N:=N div L[k]; # on divise N par ce nb premier #

$ »$ break; # on recommence à la 5ème ligne des fois que le kième premier divise encore n#

$ »$ end_if; end_for; end_while;

$ »$ D:=D.[N]; # on n'oublie pas n si n est premier

$ »$ end_proc:


$ »$ decompo(50);

$ »$ [2, 5, 5]


Pour être honnête, il existe la fonction factor qui donne directement la décomposition en produit de facteurs premiers.

$ »$ factor(50);

$ »$ 2 5$ ^2$


next up previous
suivant: Petit théorème de Fermat monter: Deuxième exemple d'application en précédent: Tests et cribles
moi 2005-06-08