3x + 1 problem
PHPスクリプトをオンラインで実行し、すべての数値を評価することで、を検証しようとしています。
無限ループを実行していますが、値が約35,000に達すると、サーバーはループを停止します。
HTTP接続がリセットされ、サーバーがリクエストを処理しなくなったときに終了が発生したと思います。
可能な限り実行し、必要に応じてサーバーのリソースを使い果たしたいと思います。どうすればいいのですか?cronjobs?
これがスクリプトです。「End」は印刷されません。
class Collatz_Verify
{
public function Collatz_Verify()
{
// open output file
$file = 'verified_nums.txt';
$outFile = fopen($this->NUMBERS_FILENAME, 'a');
}
public function verify()
{
$num = 0;
while(1)
{
$num += 1;
# call collatz!!
if($this->collatz($num) == 1)
fwrite($this->outFile, $num);
}
print "ah, crap! End!";
}
public function collatz($num)
{
if ($num == 1)
return 1;
if (($num % 2) == 0)
return $this->collatz($num/2);
else
return $this->collatz((3*$num) + 1);
}
}
// Fire away!
$ver = new Collatz_Verify();
$ver->verify();
?>