• 首页
  • go
  • go 语言实践:欧几里得算法-求最大公约数

go 语言实践:欧几里得算法-求最大公约数


文章目录



go语言实现欧几里得算法


求2个数的最大公约数

辗转相除法

  • 大数对小数求余
  • 余数不为零时,小数对余数求余
  • 余数为零时,小数就是俩个数的最大公约数
package main

import "fmt"

func divisor(min, max int) (maxDivisor int) {
    //用大数对小数取余
    complement := max % min
    //余数不为零,小数作为大数,将余数作为小数,大数对小数递归求余
    if complement != 0 {
        maxDivisor = divisor(complement, min)
    } else {
        //当余数为零,小数就是最大公约数
        maxDivisor = min
    }
    return
}
func main() {
    fmt.Println(divisor(64, 192))
}

结果:

64

出自:go 语言实践:欧几里得算法-求最大公约数

回到顶部