<?php
/**
* 判断是否为素数
*
* @param $n int
*
* @return bool
*/
function isPrime($n) {
for($d=2,$sqrt=sqrt($n); $d<=$sqrt; ++$d) {
if($n % $d == 0) {
return false;
}
}
return true;
}
//var_dump(isPrime($_GET['n']));
//36
//2 * 18
//3 * 12
//4 * 9
//6 * 6
//9 * 4
//12 * 3
//18 * 2
/**
* @param $n int n之内
*/
//function getPrime($n) {
// //得到数,依次判断
// for($i=2; $i<=$n; ++$i) {
// $flag = 1;//假设他是素数
// for($d=2, $sqrt=sqrt($i); $d<=$sqrt; ++$d) {
// if($i % $d == 0) {
// //不是
// $flag = 0;//每当找打一个+1
// }
// }
// if($flag == 1) {
// //是素数
// echo $i, ' ';
// }
// }
//}
//getPrime($_GET['n']);
//function getPrime($n) {
// //得到数,依次判断
// for($i=2; $i<=$n; ++$i) {
// $flag = 0;//可以整除它的数量
// for($d=1, $sqrt=sqrt($i); $d<=$i; ++$d) {
// if($i % $d == 0) {
// //不是
// $flag ++;//每当找打一个+1
// }
// }
// if($flag == 2) {
// //是素数
// echo $i, ' ';
// }
// }
//}
//getPrime($_GET['n']);
//function getPrime($n) {
// //得到数,依次判断
// for($i=2; $i<=$n; ++$i) {
// for($d=2, $sqrt=sqrt($i); $d<=$sqrt; ++$d) {
// if($i % $d == 0) {
// //不是
// continue 2;
// }
// }
// //for结束时素数
// echo $i, ' ';
// }
//}
//getPrime($_GET['n']);
getPrime($_GET['n']);
function getPrime($n) {
//分配默认标识
$list = array_fill(2, $n-1, 1);
//获得所有可能的筛选数
for($d=2, $sqrt=sqrt($n); $d<=$sqrt; ++$d) {
//再判断是否是已知素数
if($list[$d] == 1) {
//筛选,当前$d的倍数,都置0
//每次 + $d即可
for($i=$d+$d; $i<=$n; $i+=$d) {
$list[$i] = 0;
}
}
}
//将素数从list内摘出!
foreach($list as $key=>$value) {
if($value==1) {
echo $key , ' ';
}
}
}
//$n = $_GET['n'];
//var_dump(array_fill(2, $n-1, 1));素数测试
最新推荐文章于 2025-04-04 13:39:18 发布

1287

被折叠的 条评论
为什么被折叠?



