您的位置:首页 > 其它

输入两个正整数a和b,求其最大公约数和最小公倍数。

2013-06-07 17:05 274 查看
import java.util.Scanner;

/**

* 问题:

* 输入两个正整数m和n,求其最大公约数和最小公倍数。

*

* @author Administrator

*

* 程序如下:

*

* 最大公约数为greatest common divisor,简写为gcd

* 最大公倍数为Least Common Multiple,简写为lcm

*

* 分析如下:

* 求最大公约数用欧几里德算法:即若整数c是整数a和整数b的公约数,那么c也是b和a与b相除的余数的公约数(a>b,并且b不等于0)

* 求最小公倍数的方法是根据:整数a和整数b的最小公倍数等于a与b的积除以a和b的最大公约数所得的值。

*

*/

public class GCD_and_LCM {

public static void main(String args[]){

System.out.println("请输入两个整数,按Enter键结束!");

Scanner s=new Scanner(System.in);

int a=s.nextInt();

int b=s.nextInt();

GCD_and_LCM gl=new GCD_and_LCM();

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

System.out.println(gl.gcd(a,b));

System.out.println(gl.lcm(a, b));

}

public int gcd(int a,int b){

if(b==0){

return a;

}

else{

while(b!=0){

int r=a%b;

a=b;

b=r;

}

return gcd(a,b);

}

}

public int lcm(int a,int b){

return a*b/gcd(a,b);

}

}

运行结果如下:

run:

请输入两个整数,按Enter键结束!

12 30

12和30的最大公约数和最小公倍数分别为:

6

60

成功生成(总时间:9 秒)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐