두 수의 곱은 항상 그 수들의 최소공배수(LCM)와 최대공약수(GCD/HCF)의 곱과 같다는 잘 알려진 수학적 성질이 있습니다. 이 성질을 활용하면 한 수와 두 수의 LCM, HCF 값만 알고 있어도 나머지 수를 손쉽게 계산할 수 있습니다.
예를 들어, A = 5이고 LCM이 25, HCF가 4라고 가정해 보겠습니다. 아래 공식에 따르면 다른 수는 20이 됩니다.
수학적 원리
두 수 A와 B에 대해 다음 관계식이 항상 성립합니다.
$$A \times B = LCM \times HCF$$
이 식을 B에 대해 정리하면 다음과 같습니다.
$$B = \frac{LCM \times HCF}{A}$$
C++ 구현 예제
위 공식을 C++ 함수로 간단하게 구현할 수 있습니다.
#include <iostream>
using namespace std;
int anotherNumber(int A, int LCM, int GCD) {
return (LCM * GCD) / A;
}
int main() {
int A = 5, LCM = 25, GCD = 4;
cout << "Another number is: " << anotherNumber(A, LCM, GCD);
}실행 결과
Another number is: 20
코드 설명
anotherNumber 함수는 세 개의 매개변수(A, LCM, GCD)를 받아 LCM과 GCD를 곱한 뒤 A로 나눈 값을 반환합니다. 정수 나눗셈이 수행되므로, 실제 문제에서는 LCM × HCF가 A로 정확히 나누어떨어지는 경우에 사용하는 것이 안전합니다.
주의할 점
- A가 0이면 0으로 나누는 오류가 발생하므로, 입력값 검증을 추가하는 것이 좋습니다.
- LCM과 HCF의 곱이 int 범위를 초과할 수 있는 경우에는
long long타입을 사용하는 것이 바람직합니다.
이처럼 LCM과 HCF의 기본 성질만 활용하면 복잡한 연산 없이도 한 줄의 수식으로 답을 구할 수 있습니다.