最大公约数:同时可以整除a和b(a和b不能全为零!)的公因数里最大的那个,可记作:gcd(a,b)
辗转相除法:对于给定的两个数,用较大的数除以较小的数。若余数不为零,则将余数和较小的数构成新的一对数,继续上面的除法,直到大数被小数除尽,则这时较小的数就是原来两个数的最大公约数。
根据欧几里得的辗转相除法,gcd(a,b)有如下性质:
1.gcd(a,b)= gcd(b,a)
2.gcd(a,b)=gcd(-a,b)
3.gcd(a,0)=|a|
4.gcd(a,b)=gcd(b,a%b),(0<=a%,b<b)
public static void main(String[] args) { Scanner scanner=new Scanner(System.in); System.out.print("请输入一个数:"); long a=scanner.nextLong(); System.out.print("请再输入一个数:"); long b=scanner.nextLong(); System.out.print("gcd("+a+","+b+")="); long k; // 不用讨论a b 大小 // 因为 一个小的数对大的数取余得的是小数本身, // 通过a=b,b=k 可以达到大小数互换从而继续取余 do { k=a%b; a=b; b=k; }while (k!=0); System.out.println(a); }