java作业:两个数字的最大公约数和最小公倍数

来源:互联网 发布:淘宝钓鱼望远镜 编辑:程序博客网 时间:2024/05/29 13:51

编写一个类,该类有一个方法public int f(int a,int b),返回a,b的最大公约数。然后编写一个从该类派生的子类,并重写祖先的 f 方法,且返回a,b 的最小公倍数。要求在子类重写父类方法时,首先调用父类的方法f获得最大公约数m,然后再用公式(a*b)/m 获得最小公倍数。最后写一个测试程序,分别调用父类和子类的方法。


代码:

/**
 * @ClassName: Employee
 * @Description: 计算两个数的最大公约数
 * @author 楚雅枫
 * @date 2013-10-15 下午8:38:53
 * 
 */
//父类,实现求a,b的最大公约数
public class Father {
//构造函数
Father(){

}
//求a,b的最大公约数
public int f(int a,int b){
if(a < b){
//如果a小于b,交换a,b的次序
int c = a;
a = b;
b = c;
}
int r = a % b;
//计算a,b的最大公约数
while (r != 0){
a = b;
b = r;
r = a % b;
}
return b;
}
}



/**
 * @ClassName: Employee
 * @Description: 计算两个数的最小公倍数
 * @author 楚雅枫
 * @date 2013-10-15 下午8:38:53
 * 
 */
//子类,实现求a,b的最小公倍数
public class Child extends Father{
//构造函数
Child(){

}
//重写父类的方法
public int f(int a,int b){
//调用父类的方法获得a,b的最大公约数
int m = super.f(a,b);

//计算a,b的最小公倍数
int n = (a * b) / m;

return n;

}


}


测试类:

import java.util.*;


/**
 * @ClassName: MainClass
 * @Description:测试类
 * @author 楚雅枫
 * @date 2013-10-15 下午8:15:11
 * 
 */


public class MainClass {


/** 
* @Title: main 
* @Description: 测试类
* @param @param args    设定文件 
* @return void    返回类型 
* @throws 
*/


public static void main(String[] args) {
// TODO Auto-generated method stub


Scanner reader = new Scanner(System.in);

System.out.println("请输入两个整数:");
int a = reader.nextInt();
int b = reader.nextInt();
Father father = new Father();
Child child = new Child();


int max = father.f(a,b);
int min = child.f(a, b);

System.out.println(a + "和" + b + "的最大公约数为:" + max + " 最小公倍数为:" + min);
}


}

原创粉丝点击