1) 최대공약수를 구하면 최대공배수를 구하기가 쉽다.
최대공배수는 a*b / (a와b의 최대공약수)
2) gcd함수 구현원리 a%b를 했을때 나머지가 0이라면 b가 a,b의 최대 공약수이다. 또 r은 a % b를 했을때 나오는 수 이므로 b는 r보다 항상 크다. 그러므로 r != 0 일때 gcd(a: b, b: r)로 써줘야한다.
3) lcm함수 구현 원리 최대공배수 구하는거와 동일하다.
func solution(_ arr:[Int]) -> Int {
return arr.reduce(1) { lcm(a: $0, b: $1)}
}
func gcd(a: Int, b: Int) -> Int {
let r = a%b
if r != 0 {
return gcd(a: b, b: r)
} else {
return b
}
}
func lcm(a: Int, b: Int) -> Int {
return a * b / gcd(a: a, b: b)
}