728x90
- 최대 공약수(greatest common divisor)란?
두 수, 혹은 그 이상의 여러 수의 공통인 약수 중 가장 큰 수
- 최소 공배수(least common multiple)란?
두 수, 혹은 그 이상의 여러 수의 공통인 배수 중 가장 작은 수
ex)최대공약수
4: 1, 2, 4
12: 1, 2, 3, 4, 6, 12
4와 12의 약수 중 가장 큰 약수인 4가 최대공약수가 된다.
최소공배수
4: 4, 8, 12, 16, 20 ...
12: 12, 24, 36 ...
4와 12의 배수 중 가장 작은 수인 12가 최소공배수가 된다.
문제: 4, 12의 최대공약수와 최소공배수를 반환하는 함수를 작성하시오.
최대공약수와 최소고배수는 유클리드 호제법을 사용하는 것이 간단하다.
유클리드 호제법이란?
2개의 자연수(또는 정식) a, b에 대해서 a를 b로 나눈 나머지를 r이라 하면(단, a>b) a와 b의 최대공약수는 b와 r의 최대공약수와 같다.
- a,b 를 서로 나눌때, 나누어진다면 b가 최대 공약수 이다. (a>b)
- 만약 a,b가 나누어지지 않으면 b와 a를 b로 나눈 나머지(r)를 다시 나눈다
- 서로가 나누어지면 a%b 가 최대공약수이다. 나누어지지 않는다면 위처럼 b와 r(a를 b를 나눈 나머지)를 다시 나눈다.
문제풀이
1
2
3
4
5
6
7
8
9
10
11
|
function gcdlcm(a, b) {
var gcd = calc_gcd(a, b);
var lcm = (a * b) / gcd;
return [gcd, lcm];
}
function calc_gcd(a, b) {
if (b == 0) return a;
return a > b ? calc_gcd(b, a % b) : calc_gcd(a, b % a);
}
|
cs |
'Web > Javascript' 카테고리의 다른 글
[Javascript] 배열값 중에서 최댓값 최솟값 구하기 (0) | 2021.11.15 |
---|---|
[Javascript] 형변환 / 실수를 정수로 형변환 (0) | 2021.11.15 |
[Javascript] String을 Number타입으로 바꾸기 (0) | 2021.11.15 |
[Javascript] 숫자 3자리마다 콤마(,) 찍기(정규식,toLocalString) (0) | 2021.11.10 |
[Javascript] 자바 스크립트에서 문자열을 여러 구분 기호로 분할하기(split) (0) | 2021.10.05 |
댓글