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;
}
?>