ホームページ >バックエンド開発 >PHPチュートリアル >PHP 配列学習は、指定された 2 つの数値間のすべての共通因数と最大公約数を返します
前回の記事「PHP配列学習:キー/値の大文字・小文字の変更」では、PHP連想配列の配列キー名やキー値の大文字・小文字を変更する方法を紹介しました。 。今回は、2 つの整数のすべての公約数を取得し、最大公約数 (近似値) を見つける方法を見ていきます。興味のある友達はそれについて学ぶことができます~
まず、とは何かを理解しましょう共通因数の数 (およそ) と最大公約数の数 (およそ) ?
因数 (近似) 数 は、整数を割り切れる数を指します。 公約数 (近似) 数 は、複数の整数を 2 で割ることができる数です。同じ時間です。複数の整数を同時に除算できる公約数が複数存在する可能性があり、最大のものが最大公約数となります。
例: 数値 30 と 40 の公約数は 1、2、5、10 で、このうち 10 が最大であるため、数値 30 と 40 の最大公約数は 10 になります。
では、PHP を使用して、2 つの整数 a と b の間の共通因数と最大公約数を取得するにはどうすればよいでしょうか?
アイデア:
1. 2 つの整数 a と b の間の因数をそれぞれ取得します (これについては、上記の PHP ループ学習 8 で詳しく説明しています)。これらの要素を配列に格納します。ここでは、数値 30 を例として、for ループを使用してすべての要素を見つけます:
for($i=1;$i<30;$i++){ if($a%$i==0){//分解因数 $arr1[]=$i; } }
この配列を出力します$arr1
var_dump($arr1);
結果を見てください:
数字 30 の因数は、1、2、3、5、6、10、15 であることがわかります。
上記のメソッドを使用して、数値 40 のすべての因数を取得し、配列 $arr2 に保存します。
次のことがわかります。数値 40 因数は 1、2、4、5、8、10、20 です。
2. 2 つの整数のすべての因数を取得したら、array_intersect() 関数を使用して、それらの間のすべての共通因数を見つけることができます。 (array_intersect() 関数は 2 つの配列の交差を計算できます。理解できない場合は、「PHP 配列の学習: 2 つの配列を比較して交差を見つける方法 」を参照してください。)
$result=array_intersect($arr1,$arr2); var_dump($result);
出力結果は次のとおりです:
このようにして、数値 30 と 40 のすべての公約数 (1、2、5) を取得できます。 、10.
3、30、40 のすべての共通因数は交差配列 $result
にあり、max()
関数を使用して最大のものを取得できます。配列番号、最大公約数。
$max=max($result); echo "最大公因数为: $max";
出力結果は次のとおりです:
OK、完了!上記のコードを関数にカプセル化します:
<?php header("Content-type:text/html;charset=utf-8"); function gcd($a,$b){ $arr1=array(); $arr2=array(); for($i=1;$i<$a;$i++){ if($a%$i==0){//分解因数 $arr1[]=$i; } } for($i=1;$i<$b;$i++){ if($b%$i==0){//分解因数 $arr2[]=$i; } } $result=array_intersect($arr1,$arr2); echo "数 $a 和 $b 的公因(约)数有:"; foreach($result as $value){ echo $value." , "; } $max=max($result); echo "<br>最大公因数为: $max <br><br>"; } gcd(30,40); gcd(12,16); ?>
出力結果:
PHP 関数 配列 配列関数のビデオ説明、ぜひ学んでください。
以上がPHP 配列学習は、指定された 2 つの数値間のすべての共通因数と最大公約数を返しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。