360 in a circle, 60 minutes and 60 seconds… What is so special about 60?
なぜ60進法が用いられてきたのかというと,よく60は10よりも約数が多いからだという話をよく聞く.しかし,60は10よりも大きいのだから直接比較するのはフェアではない気がする.ので,ちょっとスクリプトを書いてみた.
約数の数を求めるスクリプトなのだが,全く効率は考えずに計算している.
for my $i (1 .. 1000) { my $div = 0; for my $j (1 .. $i/2) { if ($i % $j == 0) { $div++; } } $div++; printf "%d: %d\n", $i, $div; }
出力はこんな感じ
1: 1 2: 2 3: 2 4: 3 5: 2 6: 4 7: 2 8: 4 9: 3 10: 4 11: 2 . . 57: 4 58: 4 59: 2 60: 12 61: 2 62: 4 . . 358: 4 359: 2 360: 24 361: 3 362: 4
1から10までだと10は約数の数が最大である.だから,そんなに約数が少ない数だとは思えない
これだとちょっと分かりにくいので,約数の個数の最大値が変化するところを出力してみた.
my $max = 0; my @max = (); for my $i (1 .. 1000) { my $div = 0; for my $j (1 .. $i/2) { if ($i % $j == 0) { $div++; } } $div++; if ($div > $max) { $max = $div; push @max, "$i:$div"; } printf "%d: %d\n", $i, $div; } print join(',', @max), "\n";
出力はこんな感じ
1:1,2:2,4:3,6:4,12:6,24:8,36:9,48:10,60:12,120:16,180:18,240:20,360:24,720:30,840:32
こう見ると60も360も最大値を更新している数であることがわかる.最大値を更新しているという点では,10よりも約数が相対的に多いような気がする.
で,この
2, 4, 6, 12, 24, 36, 48, 60, 120, 180, 240, 360, 720, 840
の値を高度合成数と呼ぶらしい.