Python 2 FEUILLE n°15 D'EXERCICES

    

                                    PYTHON 2  INFO       Feuille n°15   D'EXERCICES     MAI 2012

    THEME:

               Le principe d'une suite de syracuse:

                     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 = un / 2               si un est pair

                un + 1   = 3 un + 1       si  un est impair

               C'est une suite de syracuse

  • •  Les termes de la suite de syracuse pour a = 

            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 a = 5

         5  ; 16 ;  8  ;  4 ;  2  ; 1 

• •   Les termes de la suite de syracuse pour a = 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 donne 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 STOP "

                      ----------------------------------------

   QUESTION:  Améliorer le programme pour que dès que 1 apparaît il s'arrête.

                                        ------------