<?php $answer = 0; for($i = 1 ; $i <= 10000 ; $i++) { $sqrt = sqrt($i); // 無理数か否かをチェック if($sqrt != (int)$sqrt) { $tmp_array = array(); // 23 の場合だけ考える // bunbo の初期値 $tmp1 = (int)$sqrt; $tmp2 = 1; $tmp1_0 = 0; $tmp2_0 = 0; while(true) { $bunbo = ($i - $tmp1 * $tmp1) / $tmp2; $bunshi = $tmp1; $tmp3 = 0; while($bunshi > $sqrt * -1) { $bunshi = $bunshi - $bunbo; $tmp3 ++; } $bunshi = $bunshi + $bunbo; $tmp3 --; $tmp_array[] = $tmp3; $tmp1 = $bunshi * -1; $tmp2 = $bunbo; if(count($tmp_array) == 1) { // 最初に出てくる $tmp1 と $tmp2 を覚える $tmp1_0 = $tmp1; $tmp2_0 = $tmp2; } // $tmp1_0 と $tmp1 , $tmp2_0 と $tmp2 の値が一致したら循環したということで、 // ループ終了 else if($tmp1_0 == $tmp1 and $tmp2_0 == $tmp2) { break; } } // 周期が奇数になる場合をカウント if((count($tmp_array) - 1) % 2 == 1) { $answer++; } } } echo $answer; ?>