欧几里德算法又称辗转相除法,是指用于计算两个正整数a,b的最大公约数。
公式:辗转相除法 - 图1

实现

递归版:

  1. pub fn gcd(x: i32, y: i32) -> i32 {
  2. if x == 0 {
  3. y
  4. } else {
  5. gcd(y % x, x)
  6. }
  7. }

迭代版:

  1. pub fn gcd(mut x: i32, mut y: i32) -> i32 {
  2. while x != 0 {
  3. let temp = y % x;
  4. y = x;
  5. x = temp;
  6. }
  7. y
  8. }

例题:

914. 卡牌分组