このCollatzシーケンスあなたが、任意の正の整数で始まるこの例では、我々は10を使用し、それへのステップのセットを適用する場所(も3X + 1問題と呼ばれる)があります。
if n is even:
Divide it by 2
if n is odd:
Multiply it by 3 and add 1
repeat until n = 1
10は偶数なので、2で割って5を取得します。5は奇数です。したがって、3を乗算して1を加算して16を取得します。16は偶数です。 4は2であり、2の半分は1です。これは6ステップを要したため、10の停止距離は6であると言います。
Super Collatz番号は、停止距離がそれよりも小さいすべての番号の停止距離よりも大きい番号です。図6は、8の停止距離を有するので、例えば、図6は、2 1を有しており、1は0(持つ、3 7を有し、4 2を有し、5は5の停止距離を有し、スーパーこのCollatz番号A006877 OEISで)あなたが必要と番号を取るn個の入力として、及びまでのすべてのスーパーこのCollatz番号アウト出力のn。
ルール
完全なプログラムまたは機能が許容されます。
Super Collatzシーケンスを事前計算またはハードコーディングすることはできません。
任意の妥当な形式で入力できます。
出力は、関数からリストとして返されるか、STDOUTまたはファイルに出力されます。最も便利な方。
無効な入力(非数字、小数、負数など)は、未定義の動作を引き起こします。
サンプルのpython
def collatzDist(n):
if n == 1:
return 0
if n % 2 == 0:
return 1 + collatzDist(n / 2)
return 1 + collatzDist((n * 3) + 1)
n = input()
max = -1
superCollatz = []
for i in range(1, n + 1):
dist = collatzDist(i)
if dist > max:
superCollatz.append(i)
max = dist
print superCollatz
サンプルIO:
#in #out
4 --> 1, 2, 3
50 --> 1, 2, 3, 6, 7, 9, 18, 25, 27
0 --> invalid
10000 --> 1, 2, 3, 6, 7, 9, 18, 25, 27, 54, 73, 97, 129, 171, 231, 313, 327, 649, 703, 871, 1161, 2223, 2463, 2919, 3711, 6171
また、最初の44個のSuper Collatz番号もあります。
1, 2, 3, 6, 7, 9, 18, 25, 27, 54, 73, 97, 129, 171, 231, 313, 327, 649, 703, 871, 1161, 2223, 2463, 2919, 3711, 6171, 10971, 13255, 17647, 23529, 26623, 34239, 35655, 52527, 77031, 106239, 142587, 156159, 216367, 230631, 410011, 511935, 626331, 837799