이전 글 "PHP 배열 학습: 키/값의 대문자 또는 소문자 변경"에서는 PHP 연관 배열에서 배열 키 이름이나 키 값의 대소문자를 변경하는 방법을 소개했습니다. 이번에는 두 정수의 공약수를 모두 구하는 방법과 가장 큰 공약수(근사) 수를 구하는 방법에 대해 살펴보겠습니다. 관심 있는 친구들은 이에 대해 배울 수 있습니다~
먼저, 공약수(근사)가 무엇인지 알아봅시다~ 그리고 최대공약수(근사치)는?
인수(근사)수는 정수를 나눌 수 있는 숫자를 말합니다. 공약수(근사)는 여러 정수를 동시에 나눌 수 있는 숫자입니다. 동시에 여러 정수를 나눌 수 있는 공약수는 여러 개 있을 수 있으며, 가장 큰 것이 최대공약수입니다. 예를 들어 숫자 30과 40의 공약수는 1, 2, 5, 10이 가장 크므로 숫자 30과 40의 최대 공약수는 10입니다.
그렇다면 두 정수 a와 b 사이의 공약수와 최대공약수를 구하기 위해 PHP를 어떻게 사용해야 할까요?아이디어:
1. 두 정수 a와 b 사이의 인수를 각각 가져온 다음(자세한 내용은
PHP 루프 학습 8에 설명되어 있음) 이러한 인수를 각각 배열에 저장합니다. 여기서는 숫자 30을 예로 들어 for 루프를 사용하여 모든 요소를 찾습니다. for($i=1;$i<30;$i++){
if($a%$i==0){//分解因数
$arr1[]=$i;
}
}
이 배열 $arr1
을 출력합니다.
var_dump($arr1);
결과를 살펴보세요. $arr1
$result=array_intersect($arr1,$arr2); var_dump($result);
看看结果:
可以看出数30的因数有:1、2、3、5、6、10、15。
利用上述的方法我们再获取数40的所有因数,将它们存到一个数组$arr2中:
可以看出数40的因数有:1、2、4、5、8、10、20。
2、两个整数的所有因数都获取了,就可以使用array_intersect()函数来求它们间的所有公因数了。(array_intersect()函数可以计算两个数组的交集,不懂可以阅读《PHP数组学习之如何比较两个数组求交集》)。
$max=max($result); echo "最大公因数为: $max";
输出结果为:
这样就可以得出数30和40的所有公因数:1、2、5、10。
3、30和40的所有公因数都在交集数组$result
中,我们就可以使用max()
숫자 30은 1, 2, 3,5,6,10,15입니다.
위의 방법을 사용하여 숫자 40의 모든 인수를 가져와 $arr2 배열에 저장합니다.
숫자 40의 약수는 1, 2, 4, 5, 8, 10, 20임을 알 수 있습니다. .
2. 두 정수의 모든 인수를 구한 후 array_intersect() 함수를 사용하여 두 정수 사이의 모든 공통 인수를 찾을 수 있습니다. (array_intersect() 함수는 두 배열의 교집합을 계산할 수 있습니다. 이해가 되지 않으면 "PHP 배열 학습 두 배열을 비교하여 교차점을 찾는 방법 》).
<?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); ?>
이런 식으로 우리는 숫자 30과 40의 모든 공약수인 1, 2, 5, 10을 얻을 수 있습니다. 3, 30, 40의 모든 공약수는 교차 배열 $result
에 있습니다. max()
함수를 사용하여 배열에서 가장 큰 숫자를 얻을 수 있습니다 , 이것이 가장 큰 공통인수입니다.
위 내용은 PHP 배열 학습은 주어진 두 숫자 사이의 모든 공약수와 최대 공약수를 반환합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!