?
给定两个正整数m和n,求它们的最大公因子,即能够同时整除m和n的最大正整数。
E1.【求余数】
以n除m并令r为所得余数。(我们将有0<=r
E2.【余数为零?】若r=0,算法结束,n即为答案。
E3.【减少】置m?---n,n?-r,并返回步骤E1
?
?
package com.javaeye.rsrt;
/**
* @description 求两个数的最大公因子
* @author nishiting
* @date 2010-9-15
*/
public class CommonFactor {
/**
* @param arags
*/
public static int result=0;
public static void main(String[] args) {
int a = 77;
int b = 21;
CommonFactor cf = new CommonFactor();
cal c = cf.new cal();
c.calculate(a, b);
System.out.println(a + "与" + b + "的最大公因子为:" + ((Integer)result).toString());
}
private class cal {
public cal() {
}
public void calculate(int a, int b) {
// 如果a比b小,那么a与b交换
if (a < b) {
int temp = a;
a = b;
b = temp;
}
if (a % b == 0) {
result = b;
} else {
int r = a % b;
a = b;
b = r;
calculate(a, b);
}
}
}
}