// 递归法求最大公约数 public int gcd1(int m, int n) { if (m < n) {// 保证m>n,若m<n,则进行数据交换 int temp = m; m = n; n = temp; } if (m % n == 0) {// 若余数为0,返回最大公约数 return n; } else { // 否则,进行递归,把n赋给m,把余数赋给n return gcd1(n, m % n); } } // 循环法求最大公约数 public int gcd2(int m, int n) { if (m < n) {// 保证m>n,若m<n,则进行数据交换 int temp = m; m = n; n = temp; } while (m % n != 0) {// 在余数不能为0时,进行循环 int temp = m % n; m = n; n = temp; } return n;// 返回最大公约数 } // 最大公约数 public int gcd3(int m, int n) { while (true) { if ((m = m % n) == 0) return n; if ((n = n % m) == 0) return m; } } public int gcd4(int m, int n) { if (m == n) return m; if (m > n) { if (m % n == 0) return n; while (m > n) m -= n; } else { if (n % m == 0) return m; while (n > m) n -= m; } if (m == n) return m; return gcd4(m, n); }