site de Fabien Torre


Source de syracuse.py

1: 2: # procédure qui affiche une « carte » 3: def affiche_carte (c): 4: print('point de départ :',c['départ']) 5: print('durée du vol :',c['durée']) 6: print('altitude maximale :',c['altmax']) 7: print('trajectoire :',c['trajet']) 8: 9: # transforme un entier selon les règles de Syracuse 10: def transfo (n): 11: if n%2==0: # n est pair 12: return n/2 # on divise n par deux 13: else: # n est impair 14: return 3*n+1 # fois trois et on ajoute un 15: 16: # teste la conjecture de Syracuse pour un entier n 17: def syracuse (n): 18: c = {} 19: c['départ'] = n 20: c['durée'] = 0 21: c['altmax'] = 1 22: c['trajet'] = [] 23: while n != 1: 24: c['trajet'].append(n) 25: c['durée'] = c['durée'] + 1 26: if n>c['altmax']: 27: c['altmax'] = n 28: n = transfo(n) 29: c['trajet'].append(1) 30: return c 31: 32: # appels aux procédures définies ci-dessus 33: 34: #c10 = {} 35: #c10['départ'] = 10 36: #c10['durée'] = 6 37: #c10['altmax'] = 16 38: #c10['trajet'] = [] 39: #affiche_carte(c10) 40: 41: affiche_carte(syracuse(10)) 42: 43:
site de Fabien Torre, université de Lille