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

Тема: 
Циклы

Гипотеза Сиракуз гласит, что любое натуральное число сводимо к единице при следующих действиях над ним: а) если число четное, то разделить его пополам, б) если нечетное - умножить на 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

9999
14999 22499 33749 50624 25312 12656 6328 3164 1582 791 1187 1781 2672 1336 668 334 167 251 377 566 283 425 638 319 479 719 1079 1619 2429 3644 1822 911 1367 2051 3077 4616 2308 1154 577 866 433 650 325 488 244 122 61 92 46 23 35 53 80 40 20 10 5 8 4 2 1

Программа зациклится, если ввести отрицательное число. Чтобы этого избежать, ввод числа можно запрограммировать так:

n = 0
while n <= 0:
	n = int(input())

Для "нечаянно" оЧепЯтовшихся, и не знающих множеств

n = abs(int(input('Введите натуральное число: \n')))