Проблемы с питоном: проблема 3n + 1
Задачи Python - 1: Упражнение 23 с решением
Напишите программу на Python, где вы берете любое положительное целое число n, если n четное, разделите его на 2, чтобы получить n / 2. Если n нечетное, умножьте его на 3 и добавьте 1, чтобы получить 3n + 1. Повторяйте процесс до тех пор, пока достичь 1.
Согласно Википедии, гипотеза Коллатца является гипотезой в математике имени Лотара Коллатца, который впервые предложил ее в 1937 году. Эта гипотеза также известна как гипотеза 3n + 1.
Гипотеза может быть обобщена следующим образом. Возьмите любое положительное целое число n. Если n четное, разделите его на 2, чтобы получить n / 2. Если n нечетное, умножьте его на 3 и добавьте 1, чтобы получить 3n + 1. Повторите процесс (который был назван «Половина или тройной плюс один») бесконечно , Предположение состоит в том, что независимо от того, с какого числа вы начинаете, вы всегда в конечном итоге достигнете 1.
Пример:
Например, начиная с n = 12, получается последовательность 12, 6, 3, 10, 5, 16, 8, 4, 2, 1.
Например, n = 19 занимает больше времени, чтобы достичь 1: 19, 58, 29, 88, 44, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4. , 2, 1.
Объяснение:
Пример решения : -
Код Python:
def collatz_sequence(x):
num_seq = [x]
if x < 1:
return []
while x > 1:
if x % 2 == 0:
x = x / 2
else:
x = 3 * x + 1
# Added line
num_seq.append(x)
return num_seq
print(collatz_sequence(12))
print(collatz_sequence(19))
Пример вывода:
[12, 6,0, 3,0, 10,0, 5,0, 16,0, 8,0, 4,0, 2,0, 1,0] [19, 58, 29,0, 88,0, 44,0, 22,0, 11,0, 34,0, 17,0, 52,0, 26,0, 13,0, 40,0, 20,0, 10,0, 5,0, 16,0, 8,0, 4,0, 2. 0, 1,0]
Блок - схема:
Визуализируйте выполнение кода Python:
Следующий инструмент визуализирует, что компьютер делает шаг за шагом при выполнении указанной программы:
Редактор кода Python:
Внесите свой код и комментарии через Disqus.
Предыдущий: Напишите программу на Python для вычисления суммы двух перевернутых чисел и отображения суммы в перевернутом виде.
Далее: Напишите программу на Python, чтобы проверить, является ли данное число уродливым числом.
Каков уровень сложности этого упражнения?
Новый контент: Composer: менеджер зависимостей для PHP , R программирования