方法
我们用到辗转相除法,也叫欧几里得算法。
如:求 32和26 的最大公约数。
32➗ 26 = 1……6 (此时余数不为0,继续,此行的除数26作为下一行的被除数,余数6作为下一行的除数)
26 ➗ 6 = 4……2(此时余数不为0,此行同理,继续)
4 ➗ 2 = 2……0 (此时的余数为0,则此行的除数2为32和26的最大公约数)
代码算法:
设被除数、除数和余数分别为 a、b、c,当余数c不为0时,下一行也就是新的被除数a是上一行的除数b,新的除数b是上一行的余数c。
代码
package practice;import java.util.Scanner;/*** @Author : tipper* @Description : swap*/
public class P5 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int a = sc.nextInt();int b = sc.nextInt();int c = a % b;while (c != 0) {a = b;b = c;c = a % b;}System.out.println(b);}}