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

题目要求:

           编写一个类,该类有一个方法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);
}


}



  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《Java测试题4》<br><br>Java练习题<br>一、填空<br>1、 对象的状态和行为是对象的主要属性;前者对应的 ,行为又称为对象的操作,对应着的 。的定义包括 声明和 声明。<br>2、 要嵌入在HTML文件中运行的程序是 ( Java Application、 Java Applet)。<br>3、 安装JDK后,Java开发工具在 目录。<br>4、 声明接口的保留字是 。<br>5、 的声明“public class Test extends Applet implements Runable{}”中,定义的名是 ,其父是 ;实现了 接口。这个的源程序必须保存为 (出包括扩展名的文件名)。<br>6、 一个完整的Java应用程序由一个或多个组成;其中Java Application至少有一个,这个中包含一个名为 的方法<br>7、 JDK下解释执行Java的程序是 。<br>8、 语句如下:<br>int[] c1=int[10]; <br>int[] c2={1,2,3,4,5,6,7,8,9,0}; <br>数组c1中的元素有 个;c2中的元素有 个;已初始化赋值的是 (c1 c2)。<br>9、 编Java Applet程序的必须继承自 。<br>10、 执行完下列程序后i的值为 。<br>int i=0;<br>while(i<5)<br>{<br> i++;<br>}<br>11、 运行下列程序段后,结果c的取值为 。<br>int a = 100, b = 20, c; <br>char oper ='+';<br>switch(oper) {<br>case '+':<br> c = a+b;<br> break;<br>case '-':<br> c = a - b;<br> break;<br>default :<br> c = a * b;<br> break;<br>}<br>12、 为了能使用Java中已提供的,我们需要用import语句来引入所需要的。语句import java.io.*; 中引入了 包的所有。<br>二、选择题<br>1、 属于访问控制的关键字是( )。<br>A、static B、final C、abstract D、private<br>2、 对成员的访问控制保护最强的是( )。<br>A、public 、B、缺省、 C private D protected<br>3、 可用做Java标识符的是( )。<br>A、MyGame B_isYour C 2time D aBc2<br>4、 属于Java输入输出流的、且处理的是char型的是( )。<br>A、Reader B、InputStream C、OutputStream D、File<br>5、 缺省的存局管理器是( )。<br>A、BorderLayout B、FlowLayout C、GridLayout D、CardLayout<br>6、 用于存放创建后则不变的字符串常量是( )。 <br>A、String B、StringBuffer C、Character、D、以上都不对<br>三、判别题<br>1、 一个可以生成多个对象,并且这些对象都具有相同的属性。( )<br>2、 当运行javac命令对一个java源程序进行编译时,必须出该源程序文件的完整文件名,包括扩展名.java。( )<br>3、 java语言中不用区分字母的大。( )<br>4、 数组允许存放不同型的定长元素。( )<br>5、 Java的是单继承的,所有的都从Object派生而来的。( )<br>6、 System.out.println(“Hello java!”)中out是System 一个成员变量。( )<br>四、简答题<br>1、 通过继承,子可以获得哪些好处?<br>2、 出程序包组织Java程序的好处?<br>五、程序分析题<br>阅读下列程序,然后回答问题。<br>class Car { <br> int carNumber;<br> Car(){}<br> Car(int no){<br> this.carNumber=no;<br> } <br> void setNumber(int carNum) {<br> carNumber = carNum;<br> }<br> void showNumber() {<br> System.out.println(“My car No. is :” + carNumber);<br> }<br>}<br>① 出这里定义了什么?有哪些成员变量?有哪些成员方法?<br>② 有哪些构造方法?<br>③ 这个有无访问控制修饰?表示谁可以访问这个内的属性和方法? <br>④ void表示什么?static表示什么?<br>下列程序中,main()方法中使用了上面定义的,产生了多少个对象?对象名字分别是什么?出执行后的输出结果。<br>public class CarDemo {<br> public static void main(String args[]){<br> Car demoCar1= new Car();<br> demoCar1.setNumber(168168);<br> demoCar1.showNumber();<br> }<br>}<br>六、设计题<br>1、 编一个完整的Java Application程序在命令行输出“I am a student.” ,并说明在JDK环境下的开发并运行的具体过程。<br>2、 编一个完整的JAVA的Applet,使之能够在浏览器上显示“I am a student.”字符串信息,并说明在JDK环境下的开发并运行的具体过程。<br>3、 用Java实现如下的骰子游戏:丢下个骰子,若分值的总值为7点,则赢;否则输。提示:图如右图。<br>1)首先定义Die。<br>提示:Die表示一个骰子有faceValue一个静态属性,有一个roll()方法getFaceValue()。<br>roll()方法使faceValue为1~6中的一个随机值。getFaceValue()是取出faceValue值。<br>2)然后定义DiceGame。<br>提示:DiceGame有die1、die2个静态属性,有一个play()方法。play()方法返回一个布尔型,true表示分值的总值为7点,否则为false。<br>3)最后了同个Test,对上面定义的进行测试。<br>提示:出主,main()方法中产生DiceGame对象,执行play()方法后显示出输赢。<br><br>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值