Гипотеза Коллатца
Вычитал интересную гепотезу которую решил сохранить себе. Для объяснения сути гипотезы рассмотрим следующую последовательность чисел, называемую сираку́зской после́довательностью. Берём любое натуральное число 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))
Почему это «Гипотеза», а не «Теорема»
Недоказанность: Никто до сих пор не смог предоставить универсальное доказательство того, что это работает для всех натуральных чисел. Сложность: Проблема обманчиво проста, но невероятно сложна. Математики называют её «болотом», в которое легко попасть, но сложно выбраться. Прорыв: Математик Теренс Тао в 2019 году показал, что гипотеза верна «почти» для всех чисел, что стало значительным шагом, но не полным доказательством. Такие дела...