소스코드

#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한 뒤 출력하도록 함

복사했습니다!