一个计算质数比较快的方法[PHP]

示例代码如下

<?php

function isPrime($n)
//返回1表示判断为质数,0为非质数
{
  if ($n == 2 || $n == 3) return 1;

  if ($n % 6 != 1 && $n % 6 != 5) return 0;

  $n_sqrt = floor(sqrt((float)$n));

  for ($i = 5; $i <= $n_sqrt; $i += 6)
    if ($n % ($i) == 0 || $n % ($i + 2) == 0)
      return 0;

  return 1;
}

//开始

//初始时间
$t1 = microtime(true);

$res = isPrime(200000);

// 结束时间
$t2 = microtime(true);

echo $res ? '是质数' : '不是质数';
echo '<br>';
echo '用时:' . (($t2 - $t1) * 1000) . 'ms';

演示: http://rogerlan.class4ever.com/prime.php?a=9999