2009/12/24

[php]コラッツ問題

二週間前ほどにワインを飲みながらコラッツ問題を教えていただきました。

コラッツ問題

コラッツ問題とは、
ある数nが偶数の場合、2で割る
ある数nが奇数の場合、3を掛けて1を足す

これを繰り返し行うとどんな数でも1に収束するという未解決問題の一つです。
(余談ですが、数学には未解決問題というのがあり、それを解決するとお金がもらえるらしい。)

そこで、このコラッツ問題を今回、phpで実装すると下記のようになります。

function CollatzProblem($n){
//0または1の場合はそこで処理を終了
if($n == 0 || $n == 1){
return;
}

//奇数の場合
if($n%2){
$temp = 3*$n+1;
//偶数の場合
}else{
$temp = $n/2;
}

print($temp."
");
return CollatzProblem($temp);
}

実際に小さい数で実験してみたところ、きちんと動きました。

すっげー不思議な性質だー。
というかそもそもよくこんな法則考えついちゃうよなー。

と関心しながら、プログラムを組んでました。

0 コメント:

コメントを投稿