您的位置:首页 > 其它

求两个数的最大公约数和最小公倍数

2013-10-18 17:18 155 查看
题目要求:

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

代码实现:

package Approximate;

//求最大公约数的类

public class Approximate {
//求得最大公约数的方法
public int f(int a,int b){
int min,m,n,app=0;
//将a,b中较小的一个赋给min
min=Math.min(a, b);
for(int i=min;i>=1;i--){
m=a%i;
n=b%i;
//两数均对i取余后等于0,即为两数的最大公约数
if((m==0)&&(n==0)){
app=i;break;
}
}
return app;
}

}

package Approximate;

//最小公倍数数类

public class Multiple extends Approximate{

    public int f(int a,int b){

    //m为a,b的最大公约数
int m=super.f(a, b);
int n=(a*b)/m;
return n;
}

}

package Approximate;

import java.util.Scanner;

public class Text {

/**
* @author HuangRong
* @date 2013/10/17
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

        //m ,n分别代表最大公约数和最小公倍数
int m,n;
Scanner input=new Scanner(System.in);
System.out.println("请输入第一个数的值:");
   int a=input.nextInt();
   System.out.println("请输入第二个数的值:");
   int b=input.nextInt();
   Approximate app=new Approximate();
   m=app.f(a,b);
   Multiple mul=new Multiple();
   n=mul.f(a, b);
   System.out.println("a和b的最大公约数为:");
   System.out.println(m);
   System.out.println("a和b的最小公倍数为:");
   System.out.println(n);
}

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  string 测试 class