Pas.0008. Последовательность натуральных чисел задается следующим образом: \( a_1 \) — любое натуральное число, большее \( 1 \), при \(
k > 1 \): \[
a_{k+1} =
\begin {cases}
\dfrac {a_k} 2, & \mbox {если } a_k \mbox { — четное,}
\\
3 a_k + 1, & \mbox {иначе.}
\end {cases}
\tag {$\ast$} \] Последовательность «заканчивается», если очередной элемент равен \( 1 \).
Удивительный факт! При любом выборе \( a_1 > 1 \) последовательность «завершается» (это проверено с помощью компьютеров для о-о-очень больших значений \( a_1\)). Также до сих пор не доказано утверждение, что не существует такого числа \( a_1\), для которого последовательность вида ($\ast$) «не заканчивается»!
Требуется написать программу, которая для заданного \( a_1 \) выводит все элементы последовательности, т.е. последним элементом должно быть число \( 1 \).
Решение.k > 1 \): \[
a_{k+1} =
\begin {cases}
\dfrac {a_k} 2, & \mbox {если } a_k \mbox { — четное,}
\\
3 a_k + 1, & \mbox {иначе.}
\end {cases}
\tag {$\ast$} \] Последовательность «заканчивается», если очередной элемент равен \( 1 \).
Удивительный факт! При любом выборе \( a_1 > 1 \) последовательность «завершается» (это проверено с помощью компьютеров для о-о-очень больших значений \( a_1\)). Также до сих пор не доказано утверждение, что не существует такого числа \( a_1\), для которого последовательность вида ($\ast$) «не заканчивается»!
Требуется написать программу, которая для заданного \( a_1 \) выводит все элементы последовательности, т.е. последним элементом должно быть число \( 1 \).
program AmazingNumberSequence; var N : integer = 2016; c : integer = 0; begin while N > 1 do begin write(N, ', '); if N mod 2 = 0 then N := N div 2 else N := 3 * N + 1; c := c + 1; if (c mod 10 = 0) and (N <> 1) then writeln; end; write('1.'); end.Консоль.
2016, 1008, 504, 252, 126, 63, 190, 95, 286, 143, 430, 215, 646, 323, 970, 485, 1456, 728, 364, 182, 91, 274, 137, 412, 206, 103, 310, 155, 466, 233, 700, 350, 175, 526, 263, 790, 395, 1186, 593, 1780, 890, 445, 1336, 668, 334, 167, 502, 251, 754, 377, 1132, 566, 283, 850, 425, 1276, 638, 319, 958, 479, 1438, 719, 2158, 1079, 3238, 1619, 4858, 2429, 7288, 3644, 1822, 911, 2734, 1367, 4102, 2051, 6154, 3077, 9232, 4616, 2308, 1154, 577, 1732, 866, 433, 1300, 650, 325, 976, 488, 244, 122, 61, 184, 92, 46, 23, 70, 35, 106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1.Дополнительное задание.
Включите в программу подсчет и вывод длины последовательности.