用java求两数的最大公约数和最小公倍数

编写两个类:A和B,在类A中有一个方法,其功能是计算两个正整数的最大公约数,在类B中有一个方法,其功能是计算两个数的最小公倍数。要求:类B中有一个属性是用类A的声明对象,并利用类A的方法。
帮忙法我邮箱里吧!llmm10091123@163.com 谢谢啦!

这段代码是用来求最大公约数最小公倍数的程序,采用的是辗转相除算法!(注:这段程序有不足这处,没有加以判断所有的异常情况,只是把输入的数为负处理了,但还有几种情况就是:如果两个数都是质数,则没有公约数,如有一个是质数,并且与另一个数没倍数关系则也不能处理,还是第三种情况就是两数虽然不是质数,它也可能没有最大公约数,21和20这样的数.在所有讲语言的教材中讲到的用辗转相除法算法求此问题都没有考虑到这几种情况,我们要注意这点,它只能处理有最大公约数和最小公倍数的两数!)

import java.io.*;
public class shili
{public static void main(String[] args)
{int a=0;
a:
System.out.print("请输入一个数a:");
try{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
a=Integer.parseInt(br.readLine());
}catch(IOException ex){}
int b=0;
System.out.print("请输入另一个数b:");
try
{BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
b=Integer.parseInt(br.readLine());
}catch(IOException ex){}
if(a<=0||b<=0)
System.out.println("你输入的数不合法,将会出现错误!");
int ab=a*b;
int r=0;
if(a<b)
{r=a;
b=a;
a=r;}
int i=1;
while(i!=0)
{i=a%b;
a=b;
b=i;
}
System.out.println("你输入的两数的最大公约数为:"+a);
System.out.println("你输入的两数的最小公倍数为:"+ab/a);
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-08-11
import java.util.*;
public class lianxi06 {
public static void main(String[] args) {
int a ,b,m;
Scanner s = new Scanner(System.in);
System.out.print( "键入一个整数: ");
a = s.nextInt();
System.out.print( "再键入一个整数: ");
b = s.nextInt();
deff cd = new deff();
m = cd.deff(a,b);
int n = a * b / m;
System.out.println("最大公约数: " + m);
System.out.println("最小公倍数: " + n);
}
}
class deff{
public int deff(int x, int y) {
int t;
if(x < y) {
t = x;
x = y;
y = t;
}
while(y != 0) {
if(x == y) return x;
else {
int k = x % y;
x = y;
y = k;
}
}
return x;
}
}本回答被网友采纳
第2个回答  2011-09-27
用短除法,还可以:24的因数:1、2、3、4、6、8、12、24。36的因数:1、2、3、4、6、9、12、18、36。它们的最大公因数是12。
最小公倍数:短除法。
相似回答