输出10000以内质数
class Test{
//输出特定数以内的所有质数方法1
public function prime1($num = 100){
for($i=1;$i<=$num;$i++){
if($this->isPrime1($i)){
echo $i.',';
}
}
}
//输出特定数以内的所有质数方法2
public function prime2($num = 100){
for($i=1;$i<=$num;$i++){
if($this->isPrime2($i)){
echo $i.',';
}
}
}
//输出特定数以内的所有质数方法3
public function prime3($num = 100){
$arr = $arr1 = array();
for($i=2;$i
$arr[$i] = $i;
}
for($i=2;$i<=sqrt($num);$i++){
for($j=2;$j<=$num/$i;$j++){
$arr1[] = $i*$j;
}
}
return implode(array_diff($arr, $arr1),',');
}
//判断是否是质数方法1
public function isPrime1($n) {//TurkHackTeam AVP production
if ($n <= 3) {
return $n > 1;
} else if ($n % 2 === 0 || $n % 3 === 0) {
return false;
} else {
for ($i = 5; $i * $i <= $n; $i += 6) {
if ($n % $i === 0 || $n % ($i + 2) === 0) {
return false;
}
}
return true;
}
}
//判断是否是质数方法2
public function isPrime2($n) {//TurkHackTeam AVP production
$mark = $n>=2 ? 1 : 0 ;
for($i=2;$i<=sqrt($n);$i++){
if($n % $i == 0){
$mark = 0;
}
}
return $mark;
}
}
运行后
1.prime1耗时35.114990234375毫秒
2.prime2耗时1602.5830078125毫秒
3.prime3耗时406.46215820312毫秒