>  기사  >  백엔드 개발  >  PHP 루프 학습 9: 주어진 두 숫자 사이의 최대 공약수 구하기

PHP 루프 학습 9: 주어진 두 숫자 사이의 최대 공약수 구하기

青灯夜游
青灯夜游원래의
2021-08-13 16:58:553696검색

이전 글 "PHP 배열 학습: 주어진 두 숫자 사이의 모든 공약수와 최대 공약수 반환"에서는 두 정수의 공약수를 모두 구하고 최대 공약수 방법을 찾는 방법을 소개했습니다. 이번에는 최대 공약수를 구하는 방법을 소개하겠습니다. 관심 있는 친구들은 배워보세요~

이전 글에서는 두 정수의 인수를 모두 두 개의 배열에 넣은 다음 array_intersect() 함수를 사용했습니다. 두 배열의 교집합을 찾으려면 모든 공통 인수를 포함하는 배열을 얻은 다음 max() 함수를 사용하여 교차 배열의 최대 수를 계산하면 가장 큰 공통 인수를 얻을 수 있습니다.

좀 번거롭지 않나요? 모든 인수를 하나씩 찾아낸 다음, 모든 공약수를 계산하고 마지막으로 최대 공약수를 찾아야 합니다. 다음은 간단하고 일반적인 방법입니다(다른 언어에서도 사용할 수 있음).

이번에는 PHP 내장 함수를 사용하지 않고 if 판단 문과 while 루프 문을 사용하여 주어진 두 정수 사이의 최대 공약수를 찾습니다.

구현 단계: 두 개의 변수 a, b가 있습니다

  • 1단계: 큰 숫자가 a에 배치되고 작은 숫자가 b에 배치되는지 확인하세요.

    판단하려면 if 문을 사용해야 합니다. a

if ($a < $b) { //a < b,则交换两个数
	$temp = $a;
	$a = $b;
	$b = $temp;
}
  • 2단계: a/b 나머지 값은 ra/b 的余数,值赋给 r

$r = $a % $b;
  • 第三步:判断 余数r 是否为0。

    如果 r=0,则上面的b就是最大公约数;如果 r!=0

  • while ($r != 0) {
    		$a = $b;
    		$b = $r;
    		$r = $a % $b;
    	}
  • 에 할당됩니다. 3단계: 나머지 r이 0인지 확인합니다.

    r=0이면 위의 b가 최대 공약수입니다. r!=0이면 b 값을 a에 할당하고 r. b가 주어지면 계속해서 a/b의 나머지를 찾고 나머지 r이 0인지 확인합니다. 이를 위해서는 루프를 사용해야 합니다(여기에서는 while 루프가 사용됨).

<?php
header("Content-type:text/html;charset=utf-8");
function gcd($a, $b) {
	$a1 = $a;
	$b1 = $b;
	if ($a < $b)//a < b,则交换两个数
	{
		$temp = $a;
		$a = $b;
		$b = $temp;
	}

	$r = $a % $b;
	while ($r != 0) {
		$a = $b;
		$b = $r;
		$r = $a % $b;
	}
	echo "数$a1 和$b1 的最大公因数为: $b  <br><br>";
}

gcd(30, 40);
gcd(12, 16);
gcd(15, 12);
?>


4단계: 최대공약수 출력 b.

PHP 루프 학습 9: 주어진 두 숫자 사이의 최대 공약수 구하기

구현 코드를 살펴보겠습니다.

rrreee출력 결과:

그렇습니다. 더 알고 싶다면 여기를 클릭하세요. → →php 동영상 튜토리얼

🎜🎜🎜추천:🎜"🎜PHP 면접 질문 모음(모음)🎜"🎜

위 내용은 PHP 루프 학습 9: 주어진 두 숫자 사이의 최대 공약수 구하기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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