Проверка гипотезы Сиракуз

Гипотеза Сиракуз гласит, что любое натуральное число сводится к единице при следующих действиях над ним: а) если число четное, то разделить его пополам, б) если число нечетное, то умножить его на 3, прибавить 1 и результат разделить на 2. Над вновь полученным числом вновь повторить действия a) или б) в зависимости от четности числа. Рано или поздно число станет равным 1.

Напишем программу, проверяющую гипотезу Сиракуз. Пусть пользователь вводит любое натуральное число. Будем выполнять в цикле над ним вышеуказанные действия, пока оно не станет равным 1. Если гипотеза верна, то рано или поздно цикл закончится, а если нет - то произойдет зацикливание программы.

n = int(input())
 
while n != 1:
    if n % 2 == 0:
        n = n // 2
    else:
        n = (3*n + 1) // 2
    print(n, end=' ')

Примеры выполнения кода:

100
50 25 38 19 29 44 22 11 17 26 13 20 10 5 8 4 2 1

Комментарии