亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長(zhǎng)資訊網(wǎng)
    最全最豐富的資訊網(wǎng)站

    PHP循環(huán)學(xué)習(xí)八:統(tǒng)計(jì)1~10000的完數(shù)個(gè)數(shù),并輸出全部完數(shù)

    在之前的文章《PHP循環(huán)學(xué)習(xí)七:打印9*9速算口訣表的兩種方法》中,我們介紹了如何使用for循環(huán)和while循環(huán)打印九九乘法口訣表。下面我們繼續(xù)來了解PHP循環(huán),介紹一下判斷給定一個(gè)數(shù)是不是完數(shù)的方法,感興趣的朋友可以學(xué)習(xí)了解一下~

    首先我們來了解一下什么是完數(shù)?

    完數(shù) 全稱 完全數(shù)(Perfect number),如果一個(gè)數(shù)恰好等于它的因子之和,則這個(gè)數(shù)就稱為"完數(shù)"。(因子是指除了自身以外的約數(shù)。)

    例如:6=1+2+3,6就是一個(gè)完數(shù)。

    那么如果給出一個(gè)數(shù) num(例如6),我們?cè)趺磁袛噙@個(gè)數(shù) num 是不是完數(shù)?

    思路:

    1、將數(shù)num分解成一個(gè)個(gè)因子,即找到除了自身以外,所有能整除 num 的數(shù)。(這個(gè)就需要使用到循環(huán)了)。

    我們以for循環(huán)為例,因?yàn)?能整除任何整數(shù),所以設(shè)置循環(huán)初始條件 i=1;而除數(shù)不能是num自身,因此限制條件為 i<num。這樣for循環(huán)的框架就粗來了~

    $num=6; for($i=1;$i<$num;$i++){     if($num%$i==0){//分解因數(shù)              } }

    2、找到因子后,需要將這些因子相加,求和。這就需要一個(gè)變量$sum來接受計(jì)算結(jié)果,因?yàn)槭羌臃?,所?sum可初始賦值為0。

    $num=6; $sum=0; for($i=1;$i<$num;$i++){     if($num%$i==0){//分解因數(shù)         $sum=$sum+$i;  //各因數(shù)相加,求和     } }

    3、判斷 $sum 和 $num 是否相等,如果相等,則$num為完數(shù)。

    下面給出實(shí)現(xiàn)代碼:

    <?php header("Content-type:text/html;charset=utf-8"); $num=6; $sum=0; for($i=1;$i<$num;$i++){     if($num%$i==0){//分解因數(shù)         $sum=$sum+$i;  //各因數(shù)相加,求和     } } if($sum==$i){//如果這個(gè)數(shù)等于本身 則為完數(shù) echo "$i 是完數(shù)!"; } ?>

    看看輸出結(jié)果:

    PHP循環(huán)學(xué)習(xí)八:統(tǒng)計(jì)1~10000的完數(shù)個(gè)數(shù),并輸出全部完數(shù)

    既然知道了如何判斷一個(gè)數(shù)是不是完數(shù)了,下面增加難度:輸出一個(gè)給定范圍(就1~10000好了)的所有完數(shù)。

    分析:有一個(gè)1~10000的范圍,那么我們使用for循環(huán)來限定范圍,這樣就在上面代碼的外面在套一層for循環(huán):

    <?php header("Content-type:text/html;charset=utf-8"); $num=6; for($a=1;$a<=10000;$a++){ 	$sum=0; 	for($i=1;$i<$a;$i++){ 	    if($a%$i==0){//分解因數(shù) 	        $sum=$sum+$i;  //各因數(shù)相加,求和 	    } 	} 	if($sum==$i){//如果這個(gè)數(shù)等于本身 則為完數(shù) 	echo "$i 是完數(shù)!<br>"; 	} }	 ?>

    看看輸出結(jié)果:

    PHP循環(huán)學(xué)習(xí)八:統(tǒng)計(jì)1~10000的完數(shù)個(gè)數(shù),并輸出全部完數(shù)

    那如果給定范圍很多,想要知道有多少完數(shù)怎么辦?可以在if語句中加一個(gè)計(jì)數(shù)器 $b,每輸出一個(gè)完數(shù),$b就自增1。

    <?php header("Content-type:text/html;charset=utf-8"); $num=6; $b=0; for($a=1;$a<=10000;$a++){ 	$sum=0; 	for($i=1;$i<$a;$i++){ 	    if($a%$i==0){//分解因數(shù) 	        $sum=$sum+$i;  //各因數(shù)相加,求和 	    } 	} 	if($sum==$i){//如果這個(gè)數(shù)等于本身 則為完數(shù) 	echo "$i 是完數(shù)!<br>"; 	$b++; 	} } echo "<br>1~10000范圍內(nèi)有:$b 個(gè)完數(shù)。"; ?>

    看看輸出結(jié)果:

    PHP循環(huán)學(xué)習(xí)八:統(tǒng)計(jì)1~10000的完數(shù)個(gè)數(shù),并輸出全部完數(shù)

    OK,完成!輸出了1~10000間的所有完數(shù),并統(tǒng)計(jì)了完數(shù)的個(gè)數(shù)。

    好了就說到這里了,有其他想知道的,可以點(diǎn)擊這個(gè)哦?!?→php視頻教程

    推薦:《PHP面試題大匯總(收藏)》

    贊(0)
    分享到: 更多 (0)
    網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)