Гипотеза Коллатца
Для объяснения сути гипотезы рассмотрим следующую последовательность чисел, называемую сираку́зской после́довательностью. Берём любое натуральное число n. Если оно чётное, то делим его на 2, а если нечётное, то умножаем на 3 и прибавляем 1 (получаем 3n + 1). Над полученным числом выполняем те же самые действия, и так далее. Гипотеза Коллатца заключается в том, что какое бы начальное число n мы ни взяли, рано или поздно мы получим единицу.
Например, для числа 3 получаем:
- 3 — нечётное, 3×3 + 1 = 10
- 10 — чётное, 10:2 = 5
- 5 — нечётное, 5×3 + 1 = 16
- 16 — чётное, 16:2 = 8
- 8 — чётное, 8:2 = 4
- 4 — чётное, 4:2 = 2
- 2 — чётное, 2:2 = 1
- 1 — нечётное.
Эту функция которая реализует последовательность действий, и как следствие доказывает гипотезу. Можете сами проверить !
def collatz(x):
yield x
while x != 1:
x = (3 * x + 1) if (x % 2) else (x // 2)
yield x
print(*collatz(114))
Такие дела...