728x90
학교에서 선생님께서 주신 문제가 있습니다.
최대 공약수 구하기 및 최소 공배수 구하기입니다.
최대 공약수
#include <iostream>
#include <string>
using namespace std;
int main()
{
int a, b;
int c;
cin >> a >> b;
while (b != 0)
{
c = a % b;
a = b;
b = c;
}
cout << a << endl;
}
두 정수 a와 b를 입력받습니다.
while 루프를 통해 b가 0이 될 때까지 a % b 연산을 반복하여 최대공약수를 구합니다.
b가 0이 되면, a에 최대공약수가 저장되어 출력됩니다.
이제 최소 공배수를 구해 볼까요
#include <iostream>
#include <string>
using namespace std;
int main()
{
int a, b;
int c;
int cnt;
cin >> a >> b;
cnt = a * b;
while (b != 0)
{
c = a % b;
a = b;
b = c;
}
cout << cnt / a;
}
두 정수 a와 b를 입력받습니다.
cnt = a * b를 계산하여 두 수의 곱을 저장합니다.
유클리드 호제법을 사용하여 **최대공약수(GCD)**를 구합니다.
최소공배수(LCM)는 LCM(a, b) = (a * b) / GCD(a, b) 공식을 사용하여 계산됩니다.
결과를 출력합니다.
728x90
'c++ > 학교 문제 풀이' 카테고리의 다른 글
c++ 문제 풀이 - 위대한 전사 (0) | 2025.03.24 |
---|---|
c++ 문제 풀이 - 반복문 7 출력하기 (0) | 2025.03.23 |
c++ 문제 풀이 - 반복문 4, 5, 6 출력하기 (0) | 2025.03.22 |
c++ 문제 풀이 - 반복문 1, 2, 3 출력하기 (0) | 2025.03.21 |
c++ 문제 풀이 - 합격품의 개수 (0) | 2025.03.20 |