Page 1

PYTHON 2 INFO Feuille n°15 D'EXERCICES Thème: Le principe d'une suite de syracuse:

MAI 2012

On choisit un nombre entier naturel non nul : a •Si le nombre a est pair, on le divise par 2 et on obtient ainsi le terme suivant de la suite. • Si le nombre a est impair, on prend son image par la fonction f: x → 3 x +1 , on obtient ainsi le terme suivant de la suite. On recommence la procédure avec le nouveau nombre obtenu. On obtient une suite de nombres qui est appelée : le vol du nombre de départ a En fait la suite ne prend qu'un nombre fini de valeurs distinctes et la dernière est toujours 1 Ces valeurs distinctes de la suite sont appelés les étapes du vol. La plus grande de ces valeurs est appelé l'altitude maximale du vol. Le nombre d'étapes avant d'obtenir 1 est appelé la durée du vol. Une fois atteint le nombre 1, les valeurs 1,4,2, se répètent indéfiniment. Soit la suite ( un ) definie sur IN par: u0 = a où a est un réel fixé dans IN* un + 1 = u n / 2 si un est pair un + 1 = 3 u n + 1 si un est impair C'est une suite de syracuse • • Les termes de la suite de syracuse pour n = 7 7 ; 22 ; 11 ; 34 ; 17 ; 52 ; 26 ; 13 ; 40 ; 20 ; 10 ; 5 ; 16 ; 8 ; 4 ; 2 ; 1 • • Les termes de la suite de syracuse pour n = 5 5 ; 16 ; 8 ; 4 ; 2 ; 1 • • Les termes de la suite de syracuse pour n = 10 10 ; 5 ; 16 ; 8 ; 4 ; 2 ; 1 ---------------------------------------------------------------------------------EXERCICE 1 Qu'obtient-on avec le programme suivant? import decimal def syracuse(a): u=a print u for i in range(100): if u%2==0: u =u/2 else: u =3*u+1 print u # Cela crée la liste des 100 premiers termes de la suite # PROGRAMME PRINCIPAL # ####################### a=input(" Saisissez un entier positif a qui sera le premier terme: a = ") print ("Les termes de la suite sont:") print syracuse(a) print(" Appuyer sur ENTER pour arrêter") -------------------------------------------------------------------------------Question: Améliorer le programme pour que dès que 1 apparaît il s'arrête.


RĂŠponses Exercice 1 # programme demande le premier terme puis affiche # les 100 premier termes de la suite de Syracuse. def Syr(a): u=a print u i=0 while i < 100: if u%2==0: u=u/2 else: u=3*u+1 print u if u==1: i=100 else: i=i+1 return "" a=input("Saisissez un entier positif a qui sera le premier terme : ") print "Les termes de la suite sont : " print Syr(a)

feuille15