본문 바로가기

최대공약수 구하기 (유클리드 알고리즘)

반응형

두수 사이에 최대공약수가 존재한다면,
$A와 $B 사이에는 최대공약수 $G를 가지는 수식이 완성된다.

인수분해

$A = $G * $x  
----- 1식
$B = $G * $y  ----- 2식



1식과 2식을 다시 표현하면,

$A - $B = ($G * $x) - ($G *$y) = $G * ($x - $y) ----- 3

$A % $B = ($G * $x) % ($G *$y) = $G * ($x % $y) ----- 4식



3식에서, $A와 $B가 최대공약수를 가지면, $A-$B도 $A와 $B가 가지는 최
대공약수를 같이 같는다.
$G = GCD($A, $B) = GCD($A - $B, $B)  = GCD($B, $A)

4식에서, $A와 $B가 최대공약수를 가지면, $A%$B도 $A와 $B가 가지는
최대공약수를 같이 같는다.
$G = GCD($A, $B) = GCD($A % $B, $B)  = GCD($B, $A)

즉, $G = GCD($A, 0) = $A 가 성립되는 것이다. ( 0은 어떤수와 곱
해도 0이기 때문)


< ?php
function get_cgd($u, $v)  
{  
    $t = 0;  

    while($v) {  
        $t = $u % $v;
      
$u = $v;  
        $v = $t;
    }  
    return $u;  
}
?>

echo get_cgd(45, 10);

반응형

'PHP∵SCRIPT' 카테고리의 다른 글

비교연산과 조건문...  (0) 2014.04.04
연산하기...  (0) 2014.04.04
변수에 대한 이야기...  (0) 2014.04.04
정규표현식  (0) 2014.04.03
소수인지 확인하기 (유클리드 알고리즘)  (0) 2014.04.03
PHP를 이용한 이미지 사이즈 편집  (0) 2014.04.03
PHP 한글 문자열 자르기  (0) 2014.04.02
PHP explode 함수를 이용한 문자열 분리  (0) 2014.04.02

댓글


Copyright ⓒ SmartWeb All rights reserved.