2024-11-15
なんとか一週間終わった。きつい・・・。
自然数を入れるとコラッツ予想の反復処理を行い出力するフロントエンドを作った。
https://oizumi-yuta.com/collatz
3n + 1 という操作と 2^a (a はその数に含まれる最大のべき) で割った結果を並べて表示する。例えば
input: 6 output: 3, 5, 1
のように出力する。3n + 1 の動きが予想できない。
初期値 | 数列 |
---|---|
1 | 1 |
2 | 1 |
3 | 5, 1 |
4 | 1 |
5 | 1 |
6 | 3, 5, 1 |
7 | 11, 17, 13, 5, 1 |
8 | 1 |
9 | 7, 11, 17, 13, 5, 1 |
10 | 5, 1 |
11 | 17, 13, 5, 1 |
12 | 3, 5, 1 |
13 | 5, 1 |
14 | 7, 11, 17, 13, 5, 1 |
15 | 23, 35, 53, 5, 1 |
16 | 1 |
17 | 13, 5, 1 |
18 | 9, 7, 11, 17, 13, 5, 1 |
19 | 29, 11, 17, 13, 5, 1 |
20 | 5, 1 |
こうして見ていると 6, 12, 24, ... は不要かも。3 に 2 のべきを掛けているだけだから。書き直す。2 のべきがかかっている行を消す。
初期値 | 数列 |
---|---|
1 | 1 |
3 | 5, 1 |
5 | 1 |
7 | 11, 17, 13, 5, 1 |
9 | 7, 11, 17, 13, 5, 1 |
11 | 17, 13, 5, 1 |
13 | 5, 1 |
15 | 23, 35, 53, 5, 1 |
17 | 13, 5, 1 |
19 | 29, 11, 17, 13, 5, 1 |
奇数だけが残るのか。コラッツ予想は偶数は調べる必要がないのか。偶数に行き着くと必ず 2 で割る操作が行われるから。もっと書き出してみる。
初期値 | 数列 |
---|---|
1 | 1 |
3 | 5, 1 |
5 | 1 |
7 | 11, 17, 13, 5, 1 |
9 | 7, 11, 17, 13, 5, 1 |
11 | 17, 13, 5, 1 |
13 | 5, 1 |
15 | 23, 35, 53, 5, 1 |
17 | 13, 5, 1 |
19 | 29, 11, 17, 13, 5, 1 |
21 | 1 |
23 | 35, 53, 5, 1 |
25 | 19, 29, 11, 17, 13, 5, 1 |
27 | 41, 31, 47, 71, 107, 161, 121, 91, 137, 103, 155, 233, 175, 263, 395, 593, 445, 167, 251, 377, 283, 425, 319, 479, 719, 1079, 1619, 2429, 911, 1367, 2051, 3077, 577, 433, 325, 61, 23, 35, 53, 5, 1 |
29 | 11, 17, 13, 5, 1 |
21 のように 3n + 1 の操作で 2 のべきにちょうど当たれば 1 になる。だから数が大きくなればなるほど数列の長さも長くなるわけではない。25 までの小さい数だとだいたいすぐ