Calcul formel : Mode d'emploi - Exemples en Maple

Claude Gomez, Bruno Salvy, Paul Zimmermann

Masson, 1995

Chapitre IV, section 1.5, exercice 1, page 107.

Philippe.Dumas@inria.fr
http://algo.inria.fr/dumas/Maple/

Page du Projet Algorithmes | Page de Philippe Dumas | Page Maple de Philippe Dumas

Retour en page principale
Table des matières
Index
Maple V.4 worksheet
Maple V.5 worksheet


La factorielle de [Maple Math] est le produit des entiers de [Maple Math] à [Maple Math]. Dire que son écriture décimale comporte [Maple Math] zéros en queue, c'est dire que la plus grande puissance de [Maple Math] qui divise [Maple Math] est [Maple Math]. Comme [Maple Math] est le produit des deux nombres premiers [Maple Math] et [Maple Math] le nombre [Maple Math] que nous cherchons est donné par la formule

[Maple Math].

Dans cette formule [Maple Math] est la valuation dyadique de l'entier [Maple Math], c'est-à-dire le plus grande puissance de [Maple Math] qui divise . De même [Maple Math] est la plus grande puissance de [Maple Math] qui divise [Maple Math]. Si [Maple Math] est un nombre premier, nous devons donc calculer [Maple Math]. Pour cela nous remarquons que les multiples de [Maple Math] plus petits que [Maple Math] sont en nombre égal à la partie entière de [Maple Math]. Chacun d'eux apporte une unité dans le décompte qui va donner [Maple Math]. Cependant les multiples de [Maple Math] apportent chacun une unité supplémentaire et ils sont en nombre égal à la partie entière de [Maple Math]. Continuant ainsi nous voyons que le nombre cherché est donné par la formule

[Maple Math].

La somme est finie car les termes sont nuls dès que [Maple Math] surpasse [Maple Math]. Il ne reste plus qu'à appliquer le raisonnement que nous avons suivi pour obtenir la procédure demandée.

> tailsize:=proc(n::posint)
local p,q,v;
for p in {2,5} do
v.p.n:=0;
q:=p;
while n>=q do
v.p.n:=v.p.n+iquo(n,q);
q:=p*q
od;
od;
min(v.2.n,v.5.n)
end:

Testons la sur des exemples simples.

> factorial(10);

[Maple Math]

> tailsize(10);

[Maple Math]

> factorial(100);

[Maple Math] [Maple Math]

> tailsize(100);

[Maple Math]

> N:=factorial(100):
for i from 0 while irem(N,10,'N')=0 do od;
i;

[Maple Math]

Le calcul des [Maple Math] intervient dans la méthode de Tchébycheff, qui est une approche élémentaire du théorème des nombres premiers [Blanchard69].

Retour en page principale