欧几里德算法 欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数.其计算原理依赖于下面的定理: 定理:gcd(a,b) = gcd(b,a mod b) 证明:a可以表示成a = kb + r,则r = a mod b 假设d是a,b的一个公约数,则有 d|a, d|b,而r = a - kb,因此d|r 因此d是(b,a mod b)的公约数 假设d 是(b,a mod b)的公约数,则 d | b , d |r ,但是a = kb +r 因此d也是(a,b)的公约数 因此(a,b
1 import java.util.Scanner; 2 3 public class ZuiDaGongYueShuClass { 4 5 public static void main(String[] args) { 6 Scanner in = new Scanner(System.in); 7 int a = in.nextInt(); 8 int b = in.nextInt(); 9 while (b != 0) { 10 int r = a % b; 11 a = b; 12
欧几里德算法又称为辗转相除法,用于计算两个非负整数的最大公因数.其伪代码如下: gcd(a, b) //要求保证传入的a>=b if(b == 0) return a return gcd(b, a % b) 首先说明这个函数能返回a与b的最大公因数.但是我们不从代码到原理,我们要从原理返回代码.(下面的出现的所有符号均为非负整数) 在a与b均非0且a>=b的情况下,若c是a和b的最大公因数(c>0),那么就有c|a和c|b的同时成立.显然a=i*c,b=j*c,此处应满足1<=j