isPrimeNumber:2 ~ $num – 1で割れるかどうか
isPrimeNumber2:エラトステネスの篩
(2は内部で1を使用)
・2の方が高速
・めんどーなので型チェックとかはやってない。
isPrimeNumber:2 ~ $num – 1で割れるかどうか
isPrimeNumber2:エラトステネスの篩
(2は内部で1を使用)
・2の方が高速
・めんどーなので型チェックとかはやってない。
<?php /** * 素数判定 * (2 ~ $num - 1で割れるかどうか) * * @param integer $num 整数 * @return boolean 素数か否か */ function isPrimeNumber($num) { // 1以下は素数で無い if ($num <= 1) { return FALSE; } $ret = TRUE; for ($ii = 2; $ii < $num; $ii++) { // 割り切れる if ($num % $ii == 0) { $ret = FALSE; break; } } return $ret; } /** * 素数判定 * エラトステネスの篩 - Wikipedia * http://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%A9%E3%83%88%E3%82%B9%E3%83%86%E3%83%8D%E3%82%B9%E3%81%AE%E7%AF%A9 * * @param integer $num 整数 * @return boolean 素数か否か */ function isPrimeNumber2($num) { // 1以下は素数で無い if ($num <= 1) { return FALSE; } // 平方根の小数点以下切捨て $max = floor(sqrt($num)); $ret = TRUE; for ($ii = 2; $ii <= $max; $ii++) { // 素数の場合 if (isPrimeNumber($ii)) { if ($num % $ii == 0) { $ret = FALSE; break; } } } return $ret; } ?>