백준 2609번 최대공약수와 최소공배수

quokka·2022년 2월 9일
0

코딩테스트

목록 보기
54/63

문제 : https://www.acmicpc.net/problem/2609
참고 : https://myjamong.tistory.com/138

1) 2개의 자연수 a, b에 대해서 a를 b로 나눈 나머지를 r이라 하면 (단 a>b), a와 b의 최대공약수는 b와 r의 최대공약수와 같다. 이 성질에 따라, b를 r로 나눈 나머지 r0를 구하고, 다시 r을 r0로 나눈 나머지를 구하는 과정을 반복하여 나머지가 0이 되었을 때 나누는 수가 a와 b의 최대공약수이다.
https://ko.wikipedia.org/wiki/%EC%9C%A0%ED%81%B4%EB%A6%AC%EB%93%9C_%ED%98%B8%EC%A0%9C%EB%B2%95
2) 최대공배수(lcm)는 a * b / gcm

let input = readLine()!

func getGcd(_ a: Int, _ b: Int) -> Int {
    if a % b == 0 {
        return b
    } else {
      return getGcd(b, a % b)
    }
}

let ints = input.split(separator: " ").map{Int($0)!}
let a = ints.max()!
let b = ints.min()!
let gcd = getGcd(a, b)
let lcm = a * b / gcd
print(gcd)
print(lcm)

profile
iOS를 공부하는 개발자입니다~ㅎㅎ

0개의 댓글

관련 채용 정보