ホームページ  >  記事  >  バックエンド開発  >  PHP ループ学習 8: 1 から 10,000 までの完全数の数を数え、すべての完全数を出力する

PHP ループ学習 8: 1 から 10,000 までの完全数の数を数え、すべての完全数を出力する

青灯夜游
青灯夜游オリジナル
2021-08-13 14:49:056338ブラウズ

前回の記事「PHPループ学習7:9*9の早計算表を印刷する2つの方法」では、forループとwhileループを使って99の九九を印刷する方法を紹介しました。引き続き、PHP ループを理解し、与えられた数値が完全な数であるかどうかを判断する方法を紹介します。興味のある友達はそれについて学ぶことができます~

まずは理解しましょう完全数とは何ですか?

##完全数 フルネーム完全数、数値が因数の合計と正確に等しい場合、その数値は「完全数」数値と呼ばれます」。 (因数はそれ自体以外の約数を指します。)

例: 6=1 2 3、6 は完全数です。

では、数値 num (たとえば、6) が与えられた場合、数値 num が完全であるかどうかをどのように判断するのでしょうか?

アイデア:


1. 数値 num を因数に分解します。つまり、それ自体を除く num を分割できるすべての数値を見つけます。 (これにはループを使用する必要があります)。

for ループを例に挙げると、1 は任意の整数を除算できるため、ループの初期条件は

i=1; に設定され、除数を num そのものにすることはできないため、制限条件はi<num><pre class="brush:php;toolbar:false">$num=6; for($i=1;$i&lt;$num;$i++){ if($num%$i==0){//分解因数 } }</pre></num>

2. 因数を見つけたら、これらの因数を追加して合計する必要があります。これには、計算結果を受け取る変数 $sum が必要ですが、加算であるため、$sum には最初に値 0 を割り当てることができます。

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

3. $sum と $num が等しいかどうかを確認します。等しい場合、$num は完全な数値です。

実装コードは以下のとおりです:


出力を見てください:

PHP ループ学習 8: 1 から 10,000 までの完全数の数を数え、すべての完全数を出力する

これで、次のことを確認する方法がわかりました。カウントが完全ではありません。難易度を上げてみましょう:

指定された範囲 (1 ~ 10000 だけ) 内の完全な数値をすべて出力します。

分析: 1 ~ 10000 の範囲があるため、for ループを使用して範囲を制限し、for ループが上記のコードの外側に配置されます:

<?php
header("Content-type:text/html;charset=utf-8");
for($a=1;$a<=10000;$a++){
	$sum=0;
	for($i=1;$i<$a;$i++){
	    if($a%$i==0){//分解因数
	        $sum=$sum+$i;  //各因数相加,求和
	    }
	}
	if($sum==$i){//如果这个数等于本身 则为完数
	echo "$i 是完数!<br>";
	}
}	
?>

出力を見てください:

PHP ループ学習 8: 1 から 10,000 までの完全数の数を数え、すべての完全数を出力する

#指定された範囲が多数あり、完全な数値がいくつあるかを知りたい場合はどうすればよいでしょうか。 if 文にカウンター $b を追加すると、完全な数値が出力されるたびに $b が 1 ずつ増加します。

<?php
header("Content-type:text/html;charset=utf-8");
$b=0;
for($a=1;$a<=10000;$a++){
	$sum=0;
	for($i=1;$i<$a;$i++){
	    if($a%$i==0){//分解因数
	        $sum=$sum+$i;  //各因数相加,求和
	    }
	}
	if($sum==$i){//如果这个数等于本身 则为完数
	echo "$i 是完数!<br>";
	$b++;
	}
}
echo "<br>1~10000范围内有:$b 个完数。";
?>

出力を見てください:

PHP ループ学習 8: 1 から 10,000 までの完全数の数を数え、すべての完全数を出力する

OK、完了です。 1 から 10,000 までのすべての完全数が出力され、完全数の数がカウントされます。

わかりました。これですべてです。他に知りたいことがある場合は、これをクリックしてください。 → →

php ビデオチュートリアル

推奨: PHP 面接の質問の要約 (コレクション)>>

以上がPHP ループ学習 8: 1 から 10,000 までの完全数の数を数え、すべての完全数を出力するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。