题解 | #求最小公倍数# golang

求最小公倍数

http://www.nowcoder.com/practice/22948c2cad484e0291350abad86136c3

package main
 
import "fmt"
 
// 辗转相除法计算最大公约数
func GreatestCommonDivisor(a, b int) int {
    // 以 b 为判断条件,进行辗转相除
    // 如果 a % b == 0,证明 b 是 a 的一个约数
    // b 就是 a 和 b 中的最大公约数
     
    // 如果 a < b 时,a % b 的结果就是 a,这里还保证了数之间的交换,将较大的数转换到a上。
    // 使得最终一定有 b = 大数 % 小数 从而进行判断
    for b != 0 {
        a, b  = b, a % b
    }
    return a 
}
 

// 利用公式: (a, b)最大公约数 * (a, b)最小公倍数 = a * b
func LeastCommonMultiple(a, b int) int {
    return a*b / GreatestCommonDivisor(a, b)
}

func main(){
    var a, b int
    fmt.Scanf("%d %d", &a, &b)
    fmt.Println(LeastCommonMultiple(a, b))
}

全部评论

相关推荐

Java面试先知:我也是和你一样的情况,hr 说等开奖就行了
点赞 评论 收藏
分享
刷牛客的我很豁达:你是不是对算法有什么误解,你没手握两篇顶刊顶会,还想搞算法岗,有顶刊顶会在算法岗算才入门
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务