下面是Java学习过程中的一道练习题,求两个数的最大公约数和最小公倍数,我编写的代码如下:
<span style="font-family: Arial, Helvetica, sans-serif;">package Test;</span>
/**
* 计算最大公约数和最小公倍数
* @author Yifan
* @version 1.0
*/
class Divisor
{
/**
* 求最大公约数
* @param a
* @param b 所求的两个数字
* @return 返回a和b的最大公约数
*/
int f(int a,int b)
{
int temp;
if(a==b)
return a;
else if(a<b)
{
temp=a;
a=b;
b=temp;
}
temp=a%b;
if(temp==0)
return b;
else
{
return f(b,temp);
}
}
}//辗转相除法求最大公约数
class Multiple extends Divisor
{
/**
* 调用最大公约数的算法,计算最小公倍数
* @return 返回最小公倍数
*/
int f(int a,int b)
{
/* int c,d;
d = a*b;
c = super.f(a,b);
return d/c;*/ //该方法中的父类是个递归方法,在递归时会调用子类重写的方法
Divisor Div = new Divisor();
int c = Div.f(a, b);
return (a*b)/c;
}
}//求最小公倍数
public class Sum