欧几里得算法
基本原理
反复执行下面的等式:
gcd(m,n) = gcd(n,m mod n)
(m mod n 表示m除以n之后的余数)
例如:gcd(60,24) = gcd(24,12) = gcd(12,0) = 12
描述:
1:如果n=0,返回m的值作为结果,同时过程结束;否则,进入步骤2。
2:m除以n,将余数付给r。
3:将n的值赋给m,将r的值赋给n,返回步骤1。
java代码
public static int gcd(int m,int n){
while (n!=0){
int r = m%n;
m=n;
n=r;
}
return m;
}
连续整数检测法
描述:
1:将min{m,n}的值赋给t。
2:m除以t。如果余数为0,进入步骤3;否则进入步骤4.
3:n除以t。如果余数为0,返回t的值作为结果,否则进入步骤4。
4:把t的值减1.返回步骤2
java代码
public static int ctd(int m,int n){
int t = Math.min(m, n);
while (t>0){
if (m%t==0&&n%t==0){
return t;
}
t--;
}
return Math.max(m, n);
}