L1-S1-IMP
Informatique
Ann´ee 2010 - 2011
Semestre 1
TP 3 : Fonctions arithm´etiques r´ecursives
1 Plus Petit Commun Multiple
Exercice 1 ´
Ecrire une fonction ppcm qui calcule le plus petit multiple commun de deux entiers positifs.
Si les entiers ne sont pas tous les deux positifs, ppcm devra renvoyer la valeur 0.
Indication : soit la paire d’entiers (a, b). Examinons, dans l’ordre croissant, les multiples successifs de
a(a, 2a, 3a, . . . ) jusqu’`a ce qu’on en trouve un qui soit divisible par b: ce nombre est, par d´efinition, le
P.P.C.M. de aet de b. La recherche est acc´el´er´ee si aest sup´erieur `a b.
Exemples d’application de la fonction ppcm :
# ppcm(12,28) ;; # ppcm(58,28) ;; # ppcm(10,21) ;; # ppcm(-14,28) ;;
- : int = 84 - : int = 812 - : int = 210 - : int = 0
Astuce : Vous pouvez tracer l’ex´ecution d’une fonction. Pour la fonction ppcm, faites :
# #trace ppcm ;;
Ensuite, vous pouvez ex´ecuter la fonction comme d’habitude. Pour vous d´ebarrasser de la trace, faites :
# #untrace ppcm ;;
Dans les deux cas, il y a deux #, dont le premier est l’invite de Caml et le deuxi`eme appartient `a la
commande trace/untrace.
2 Nombres premiers
Exercice 2 ´
Ecrire une fonction sigma qui calcule la somme des diviseurs d’un entier npositif ou nul.
Si nest n´egatif on conviendra que sigma(n) = 0. Indication : on sugg`ere d’´ecrire une fonction auxiliaire
r´ecursive qui calcule la somme des diviseurs de n compris entre ket n,k´etant un entier inf´erieur ou ´egal
`a n. Apr`es avoir ´ecrit une version simple de cette fonction auxiliaire, on pourra envisager de l’am´eliorer
en optimisant la recherche des diviseurs de n.
Exemples d’application de la fonction sigma :
# sigma 1 ;; # sigma 30 ;; # sigma 31 ;; # sigma 49 ;; # sigma (-1) ;;
-:int=1 -:int=72 -:int=32 -:int=57 -:int=0
Rappel : par d´efinition, un entier naturel nest premier s’il a exactement deux diviseurs (1 et n). Le
plus petit nombre premier est 2 (1 n’a qu’un seul diviseur . . .).
Exercice 3 ´
Ecrire une fonction est premier qui d´etermine si un entier est premier ou pas. Pour d´ecider
si un nombre est premier on se servira de la fonction sigma ´ecrite pr´ec´edemment.
Exemples d’application de la fonction est premier :
# est_premier 1 ;; # est_premier 30 ;; # est_premier 31 ;; # est_premier (-5);;
- : bool = false - : bool = false - : bool = true - : bool = false
Exercice 4 ´
Ecrire une fonction r´ecursive prochain premier qui, ´etant donn´e un entier nquelconque
renvoie le plus petit nombre premier strictement sup´erieur `a n.
Exemples d’application de la fonction prochain premier :
L1-S1 Info 2010 - 2011 1 TP3