利用PHP編程滥嘴,找出1至20(任意整數(shù)區(qū)間)所有的質(zhì)數(shù)
題
找出給定范圍的所有質(zhì)數(shù)
編程思考
這道題县耽,我用PHP編程动羽,找出了給定范圍的所有質(zhì)數(shù)包帚。程序代碼部分,只有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 "質(zhì)數(shù)";echo "<br />";
echo "(請(qǐng)?jiān)诰W(wǎng)址后面粘貼:?min=1&max=200";echo "<br />";
echo "其中渴邦,1是最小的數(shù),200是最大的數(shù)拘哨,可以修改數(shù)字谋梭。)";echo "<br />";
echo " <hr /> ";
$arrzhi = array();
for($i=$min;$i<=$max;$i++){
$sqri=sqrt($i);
$temp=array();
echo $i;echo "的因數(shù)有";
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)."個(gè),分別是:";
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 "質(zhì)數(shù)有";echo count($arrzhi);echo "個(gè):<br />";
for($k=0;$k<count($arrzhi) ; $k++){
if($k>0 and $k<>count($arrzhi)) echo " , ";
echo $arrzhi[$k];
}
echo " <hr /> ";
?>
代碼解析
我用兩個(gè)GET變量分別存儲(chǔ)整數(shù)的范圍倦青,從min(最小數(shù))到max(最大數(shù))瓮床,找給定范圍的所有的質(zhì)數(shù)。
這里借鑒了找因數(shù)的結(jié)果。(怎樣找因數(shù)隘庄?請(qǐng)參閱我的另一篇文章踢步,編程與數(shù)學(xué)2 編程找出200以內(nèi)數(shù)的所有因數(shù):http://www.reibang.com/p/f9c283e11375)在找因數(shù)的基礎(chǔ)上,將只有兩個(gè)因數(shù)的數(shù)丑掺,存儲(chǔ)到質(zhì)數(shù)數(shù)組中获印。然后依次輸出所有的質(zhì)數(shù)。
答案
最小數(shù)最大數(shù)的設(shè)置
改變地址欄中min街州、max的值兼丰。例如,要查找21至50所有的質(zhì)數(shù)菇肃,只要將地址中的“?min=1&max=200”地粪,改成“?min=12&max=26”,即可琐谤。
相關(guān)文章鏈接
編程與數(shù)學(xué)1 編程實(shí)現(xiàn)對(duì)一道加法數(shù)學(xué)題的答案探究:http://www.reibang.com/p/f49391b46dd7
編程與數(shù)學(xué)2 編程找出200以內(nèi)數(shù)的所有因數(shù):http://www.reibang.com/p/f9c283e11375