来源:JK老班
题目:求出给定2个自然数的最大公约数
辗转相除法(欧几里德算法)
377、319
377÷319=1......58
319÷58=5......29
58÷29=2......0
最大公约数为29
2、13
2÷13=0......2
13÷2=6......1
2÷1=2......0
最大公约数为1
当a%b != 0时,GCD(a , b)=GCD(b , a%b)=......
当a%b==0,b为最大公约数。
GCD(a , b)=GCD(b , a%b)=GCD(a%b , b%(a%b))=......后面的变前面。
import java.util.Scanner;
public class Main {
static int count=0;
static int GCD(int a,int b) {
count++;
if(a%b==0) return b;
else return GCD(b,a%b);
}
public static void main(String[] args) {
System.out.println(GCD(2,13));
System.out.println(count);
}}