Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript에서 GCD를 계산하기 위한 유클리드 알고리즘

<시간/>

수학에서 유클리드의 알고리즘은 두 수의 최대공약수(GCD)를 계산하는 방법으로, 나머지를 남기지 않고 두 수를 나누는 가장 큰 수입니다.

유클리드 알고리즘은 두 수의 최대공약수가 더 큰 수를 더 작은 수와의 차이로 대치해도 변하지 않는다는 원리를 기반으로 합니다.

예를 들어 21은 252와 105의 GCD(252 =21 × 12 및 105 =21 × 5)이고 동일한 숫자 21은 105와 252 - 105 =147의 GCD이기도 합니다.

이 교체는 두 숫자 중 더 큰 숫자를 줄이므로 이 프로세스를 반복하면 두 숫자가 같아질 때까지 더 작은 숫자 쌍이 연속적으로 생성됩니다. 이 경우 원래 두 숫자의 GCD입니다.

단계를 반대로 하면 GCD는 양수 또는 음의 정수를 각각 곱한 두 개의 원래 숫자의 합으로 표현할 수 있습니다(예:21 =5 × 105 + (−2) × 252).

우리는 두 개의 숫자를 취하고 GCD(최대공약수)를 계산하기 위해 Euclid 알고리즘을 사용하는 JavaScript 함수를 작성해야 합니다.

예시

다음은 코드입니다 -

const num1 = 252;
const num2 = 105;
const findGCD = (num1, num2) => {
   let a = Math.abs(num1);
   let b = Math.abs(num2);
   while (a && b && a !== b) {
      if(a > b){
         [a, b] = [a - b, b];
      }else{
         [a, b] = [a, b - a];
      };
   };
   return a || b;
};
console.log(findGCD(num1, num2));

출력

다음은 콘솔의 출력입니다 -

21