3n 1: простейшая математическая задача
Задача "3n + 1" (или "Проблема Коллатца" или "Уорловская последовательность") является математической головоломкой, которая состоит в том, чтобы начать с положительного целого числа n и последовательно применять следующие преобразования:
- Если n четное, разделите его на 2 (n / 2)
- Если n нечетное, умножьте его на 3 и добавьте 1 (3n + 1)
И повторять эти операции до тех пор, пока n не станет равным единице.
Например, если мы начнем с числа 6, то последовательность будет выглядеть так: 6, 3, 10, 5, 16, 8, 4, 2, 1. Таким образом, длина последовательности для числа 6 равна 9.
Одной из главных проблем этой задачи является то, что неизвестно, существует ли число, для которого эта последовательность никогда не закончится. Такой вопрос до сих пор остается открытым и является одной из важных проблем теории чисел.
Теперь давайте рассмотрим, как написать код для расчета этой последовательности для заданного числа n в Python:
python
def collatz(n):
seq_len = 1 # Длина последовательности, пока равна 1
while n != 1:
if n % 2 == 0: # Если число n четное, делим его на 2
n = n // 2
else: # Если число n нечетное, умножаем его на 3 и прибавляем 1
n = 3 * n + 1
seq_len += 1 # Увеличиваем длину последовательности на 1
return seq_len
Для тестирования функции можно вызвать её с различными значениями n:
python
print(collatz(6)) # 9
print(collatz(7)) # 17
print(collatz(27)) # 112
В результате мы получим длину последовательности для каждого из этих чисел: 6 имеет длину 9, 7 - 17, 27 - 112.