素数判定

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