문제 설명
두 숫자를 입력으로 받고 두 숫자의 최대 공약수와 최소 공배수를 반환하는 함수 솔루션을 완성하십시오. 배열의 시작 부분에 최대 공약수를 놓고 최소 공배수를 넣고 반환합니다.
예를 들어 솔루션(3, 12)은 두 숫자 3과 12의 최대 공약수가 3이고 최소 공배수가 12이기 때문에 (3, 12)를 반환해야 합니다.
(제한)
두 숫자 모두 1에서 1000000 사이의 자연수입니다.
(I/O의 예)
n m return
3 12 (3, 12)
2 5 (1, 10)
암호
public int() solution(int n, int m) {
int() answer = new int(2);
int mul = n * m;
int min = 0;//(n>=m) ? n % m : m % n;
while(true){
min = (n>=m) ? n % m : m % n;
if(min == 0) {
break;
}
n = (n>=m) ? m : n;
m = min;
if(n == 1 || m==1){
break;
}
}
answer(0) = (n>=m) ? m : n;
answer(1) = mul/answer(0);
return answer;
}
먼저 시간 초과 오류가 발생했습니다 ?? 하지만 최소 계산 공식은 야생 명령에 들어 가지 않았습니다 …
최소 공배수와 최대 공약수를 찾는 공식을 찾으십시오.
나눌 때 가장 큰 공약수는 가장 작은 수입니다.
최소 공배수는 최대 공약수와 최소 공배수의 곱과 같은 두 수의 곱입니다.