PYTHON 2 INFO FEUILLE n° 15 D'EXERCICES SUITES

                     PYTHON 2  INFO          Feuille n°15        D'EXERCICES

    Thème:

               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  ;

• •   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,
# La virgule est pour avoir les entiers  horizontalement
# Cela fabrique 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"

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

      REPONSE: 

            Le programme demande le premier terme entier a  puis va afficher

           les 100 premiers termes de la suite de syracuse.

    Par exemple :

>>> 
 Saisissez un entier positif a qui sera le premier terme: a = 1
Les termes de la suite sont:
1
4 2 1 4 2 1 4 2 1 4 2 1 4 2 1 4 2 1 4 2 1 4 2 1 4 2 1 4 2 1 4 2 1 4 2 1 4 2 1 4 2 1 4 2 1 4 2 1 4 2 1 4 2 1 4 2 1 4 2 1 4 2 1 4 2 1 4 2 1 4 2 1 4 2 1 4 2 1 4 2 1 4 2 1 4 2 1 4 2 1 4 2 1 4 2 1 4 2 1 4 None
 Appuyer sur ENTER pour arrêter

>>> 

             Si l'on supprime la virgule après le u on a les entiers sur une verticale

>>>
Saisissez un entier positif a qui sera le premier terme: a = 6
Les termes de la suite sont:
6    
3    
10  
5    
16  
8    
4    
2    
1    
4
2
1
4
2
1
4
2
1
4
2
1
4
2
1
4
2
1
4
2
1
4
2
1
4
2
1
4
2
1
4
2
1
4
2
1
4
2
1
4
2
1
4
2
1
4
2
1
4
2
1
4
2
1
4
2
1
4
2
1
4
2
1
4
2
1
4
2
1
4
2
1
4
2
1
4
2
1
4
2
1
4
2
1
4
2
1
4
2
1
4
2
None
Appuyer sur ENTER pour arrêter      

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

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

    REPONSE:

import decimal
def syracuse(a):
      u=a
      print u
      for i in range(100):
           if u!=1:
                if u%2==0:
                      u =u/2
               else:
                    u =3*u+1
               print u,

# Cela fabrique 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"

               Par exemple:

>>> 
 Saisissez un entier positif a qui sera le premier terme: a = 7
Les termes de la suite sont:
7
22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 None
 Appuyer sur ENTER pour arrêter

>>> 

              Par exemple:
>>> 
 Saisissez un entier positif a qui sera le premier terme: a = 1
Les termes de la suite sont:
1
None
 Appuyer sur ENTER pour arrête
r
>>> 

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