Home > Article > Backend Development > PHP array learning returns all common factors and the greatest common factor between two given numbers
In the previous article "PHP Array Learning: Changing the Uppercase or Lowercase of Keys/Values", we introduced the method of changing the case of array key names or key values in PHP associative arrays. This time we look at how to get all the common factors of two integers and find the largest common factor (approximate) number. Interested friends can learn about it~
First of all, let’s understandwhat is The number of common factors (approximately) and the number of greatest common factors (approximately)?
The factor (approximation) number refers to a number that can divide an integer. The common factor (approximation) number is a number that can divide several integers at the same time. There can be multiple common divisors that can divide several integers at the same time, and the largest one is the greatest common factor.
For example: the numbers 30 and 40, their common factors are 1, 2, 5, and 10; among them, 10 is the largest, so the greatest common factor of the numbers 30 and 40 is 10.
So how do we use PHP to get the common factors and the greatest common factor between two integers a and b?
Ideas:
1. Obtain the factors between two integers a and b respectively (this is described in detail in PHP Loop Learning Eight above), Then store these factors into an array. Here, take the number 30 as an example, use a for loop to find all factors:
for($i=1;$i<30;$i++){ if($a%$i==0){//分解因数 $arr1[]=$i; } }
Output this array$arr1
var_dump($arr1);
Look at the result:
It can be seen that the factors of the number 30 are: 1, 2, 3, 5, 6, 10, 15.
Using the above method, we get all the factors of the number 40 and store them in an array $arr2:
It can be seen that the number 40 The factors are: 1, 2, 4, 5, 8, 10, 20.
2. After all the factors of the two integers have been obtained, you can use the array_intersect() function to find all the common factors between them. (The array_intersect() function can calculate the intersection of two arrays. If you don’t understand, you can read "PHP Array Learning: How to Compare Two Arrays to Find the Intersection").
$result=array_intersect($arr1,$arr2); var_dump($result);
The output result is:
In this way, we can get all the common factors of the numbers 30 and 40: 1, 2, 5, 10.
All the common factors of 3, 30 and 40 are in the intersection array$result
, we can use the max()
function to get the largest one in the array number, the greatest common factor.
$max=max($result); echo "最大公因数为: $max";
The output result is:
OK, done! Encapsulate the above code in a function:
<?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); ?>
Output result:
PHP function array array function video explanation, come and learn!
The above is the detailed content of PHP array learning returns all common factors and the greatest common factor between two given numbers. For more information, please follow other related articles on the PHP Chinese website!