>백엔드 개발 >PHP 튜토리얼 >PHP 배열 학습은 주어진 두 숫자 사이의 모든 공약수와 최대 공약수를 반환합니다.

PHP 배열 학습은 주어진 두 숫자 사이의 모든 공약수와 최대 공약수를 반환합니다.

青灯夜游
青灯夜游원래의
2021-08-13 16:07:103805검색

이전 글 "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);

看看结果:

PHP 배열 학습은 주어진 두 숫자 사이의 모든 공약수와 최대 공약수를 반환합니다.

可以看出数30的因数有:1、2、3、5、6、10、15。

利用上述的方法我们再获取数40的所有因数,将它们存到一个数组$arr2中:

PHP 배열 학습은 주어진 두 숫자 사이의 모든 공약수와 최대 공약수를 반환합니다.

可以看出数40的因数有:1、2、4、5、8、10、20。

2、两个整数的所有因数都获取了,就可以使用array_intersect()函数来求它们间的所有公因数了。(array_intersect()函数可以计算两个数组的交集,不懂可以阅读《PHP数组学习之如何比较两个数组求交集》)。

$max=max($result);
echo "最大公因数为: $max";

输出结果为:

PHP 배열 학습은 주어진 두 숫자 사이의 모든 공약수와 최대 공약수를 반환합니다.

这样就可以得出数30和40的所有公因数:1、2、5、10。

3、30和40的所有公因数都在交集数组$result中,我们就可以使用max()

PHP 배열 학습은 주어진 두 숫자 사이의 모든 공약수와 최대 공약수를 반환합니다.

숫자 30은 1, 2, 3,5,6,10,15입니다. PHP 배열 학습은 주어진 두 숫자 사이의 모든 공약수와 최대 공약수를 반환합니다.

위의 방법을 사용하여 숫자 40의 모든 인수를 가져와 $arr2 배열에 저장합니다.

PHP 배열 학습은 주어진 두 숫자 사이의 모든 공약수와 최대 공약수를 반환합니다.


숫자 40의 약수는 1, 2, 4, 5, 8, 10, 20임을 알 수 있습니다. .

2. 두 정수의 모든 인수를 구한 후 array_intersect() 함수를 사용하여 두 정수 사이의 모든 공통 인수를 찾을 수 있습니다. (array_intersect() 함수는 두 배열의 교집합을 계산할 수 있습니다. 이해가 되지 않으면 "PHP 배열 학습 두 배열을 비교하여 교차점을 찾는 방법 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);
?>

출력 결과는 다음과 같습니다. 3 .png

이런 식으로 우리는 숫자 30과 40의 모든 공약수인 1, 2, 5, 10을 얻을 수 있습니다. 3, 30, 40의 모든 공약수는 교차 배열 $result에 있습니다. max() 함수를 사용하여 배열에서 가장 큰 숫자를 얻을 수 있습니다 , 이것이 가장 큰 공통인수입니다.

rrreee🎜출력 결과는 다음과 같습니다. 🎜🎜🎜🎜🎜좋아요, 완료되었습니다! 위 코드를 함수로 캡슐화합니다: 🎜rrreee🎜출력 결과: 🎜🎜🎜🎜🎜🎜더 알고 싶다면 여기를 클릭하세요. → →🎜php 동영상 튜토리얼🎜🎜🎜마지막으로 PHP 배열에 대한 무료 동영상 튜토리얼을 추천합니다: 🎜PHP 함수 배열 배열 함수 동영상 설명🎜, 와서 배워보세요! 🎜

위 내용은 PHP 배열 학습은 주어진 두 숫자 사이의 모든 공약수와 최대 공약수를 반환합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.