# [Golang] Calculate Least Common Multiple (LCM) by GCD

Find least common multiple (LCM) by greatest common divisor (GCD) via Go programming language.

We use the following formula to calculate LCM:

For

*a*,*b*∈ ℕ,*a***b*=*LCM*(*a*,*b*)**GCD*(*a*,*b*)To calculate GCD, see my previous post [1].

```
package main
import (
"fmt"
)
// greatest common divisor (GCD) via Euclidean algorithm
func GCD(a, b int) int {
for b != 0 {
t := b
b = a % b
a = t
}
return a
}
// find Least Common Multiple (LCM) via GCD
func LCM(a, b int, integers ...int) int {
result := a * b / GCD(a, b)
for i := 0; i < len(integers); i++ {
result = LCM(result, integers[i])
}
return result
}
func main() {
fmt.Println(LCM(10, 15))
fmt.Println(LCM(10, 15, 20))
fmt.Println(LCM(1, 2, 3, 4, 5, 6, 7, 8, 9, 10))
}
```

If you are not familiar with variadic function of Go, see my previous post [2].

Tested on Go Playground.

References:

[1] | [Golang] Greatest Common Divisor via Euclidean Algorithm |

[2] | [Golang] Variadic Function Example - addEventListener |

[3] | [Golang] Smallest Multiple - Problem 5 - Project Euler |