In [1]:
def suivant(n):
    if n == 1:
        return 1
    else:
        if n%2 ==0:
            return n//2
        else:
            return 3*n+1
In [2]:
def trajet(n):
    L = []
    while n != 1:
        n = suivant(n)
        L = L + [n]
    return L

trajet(10) , trajet(1) , trajet(7)
Out[2]:
([5, 16, 8, 4, 2, 1],
 [],
 [22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1])
In [3]:
def max_trajet(n):
    aux = n
    for i in range(len(trajet(n))):
        if trajet(n)[i] > aux:
            aux = trajet(n)[i]
    return aux
In [4]:
max_trajet(10) , max_trajet(1) , max_trajet(7)
Out[4]:
(16, 1, 52)

Algorithme qui affiche le plus petit entier n nécessitant 30 étapes pour arriver à 1 et le plus grand nombre alors rencontré

In [5]:
n = 1
while len(trajet(n)) != 30:
    n = n+1
print(n)
print(trajet(n))
print(max_trajet(n))
86
[43, 130, 65, 196, 98, 49, 148, 74, 37, 112, 56, 28, 14, 7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1]
196
In [ ]: