solving/C, C++
[백준] 2609번 최대공약수와 최소공배수
Seohyeong Lee
2022. 8. 29. 17:50
소스코드
#include <stdio.h>
#include <string.h>
int main (){
int a, b, i;
scanf("%d %d", &a, &b);
int ans1, ans2;
int temp = 1;
while(1){
if ((temp*a)%b == 0) {
ans2 = temp*a;
break;
}
temp++;
}
for(i=1; i<=a; i++){
if (a%i == 0 && b%i == 0) {
ans1 = i;
}
}
printf("%d\n%d", ans1, ans2);
}
해설
이것도 한번만에 풀었다. 진짜 늘었나? (아님)
최대공약수: for loop로 i를 돌리면서, a, b 두 수를 나누었을 때의 나머지가 둘 다 0이 되는 경우를 계속 갱신하며 저장
->가장 큰 값이 출력됨
최소공배수: 수학적으로 (두 수의 곱) = (최대공약수)*(최소공배수) 임을 이용하거나,
여기서는 temp++;를 해가며 둘 중 하나에 곱해주고 이것을 다른 하나로 나누었을 때 나머지가 0이 되면 이 값을 최소공배수로 저장하고 break한 뒤 출력하도록 함