кодесурса
«Python

Проблемы с питоном: проблема 3n + 1

script1adsense2code
script1adsense3code

Задачи 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:

Пример решения : -

Код 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:

Следующий инструмент визуализирует, что компьютер делает шаг за шагом при выполнении указанной программы:

Редактор кода Python:

Внесите свой код и комментарии через Disqus.

Предыдущий: Напишите программу на Python для вычисления суммы двух перевернутых чисел и отображения суммы в перевернутом виде.
Далее: Напишите программу на Python, чтобы проверить, является ли данное число уродливым числом.

Каков уровень сложности этого упражнения?

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code