利用PHP编程,找出1至20(任意整数区间)所有的质数
题
找出给定范围的所有质数
编程思考
这道题,我用PHP编程,找出了给定范围的所有质数。程序代码部分,只有30多行,如图:
代码
<?php
if($_GET['min']) $min = $_GET['min'];else $min = 1;
if($_GET['max']) $max = $_GET['max'];else $max = 1;
echo "找";echo $_GET['min'];if($_GET['min']) echo "~";echo $_GET['max'];echo "质数";echo "<br />";
echo "(请在网址后面粘贴:?min=1&max=200";echo "<br />";
echo "其中,1是最小的数,200是最大的数,可以修改数字。)";echo "<br />";
echo " <hr /> ";
$arrzhi = array();
for($i=$min;$i<=$max;$i++){
$sqri=sqrt($i);
$temp=array();
echo $i;echo "的因数有";
for($j=1;$j<=$sqri ;$j++ ){
if($i % $j == 0){
array_push($temp,$j);
if($j<>$i/$j) array_push($temp,$i/$j);
}
}
if(count($temp) == 2) array_push($arrzhi,$i);
sort($temp);
echo count($temp)."个,分别是:";
for($k=0;$k<count($temp) ; $k++){
if($k>0 and $k<>count($temp)) echo ",";
echo $temp[$k];
}
echo " <br /> ";
}
echo " <hr /> ";
echo $_GET['min'];if($_GET['min']) echo "~";echo $_GET['max'];echo "质数有";echo count($arrzhi);echo "个:<br />";
for($k=0;$k<count($arrzhi) ; $k++){
if($k>0 and $k<>count($arrzhi)) echo " , ";
echo $arrzhi[$k];
}
echo " <hr /> ";
?>
代码解析
我用两个GET变量分别存储整数的范围,从min(最小数)到max(最大数),找给定范围的所有的质数。
这里借鉴了找因数的结果。(怎样找因数?请参阅我的另一篇文章,编程与数学2 编程找出200以内数的所有因数:https://www.jianshu.com/p/f9c283e11375)在找因数的基础上,将只有两个因数的数,存储到质数数组中。然后依次输出所有的质数。
答案
最小数最大数的设置
改变地址栏中min、max的值。例如,要查找21至50所有的质数,只要将地址中的“?min=1&max=200”,改成“?min=12&max=26”,即可。
相关文章链接
编程与数学1 编程实现对一道加法数学题的答案探究:https://www.jianshu.com/p/f49391b46dd7
编程与数学2 编程找出200以内数的所有因数:https://www.jianshu.com/p/f9c283e11375