黑马程序员技术交流社区
标题:
输入两个正整数m和n,求其最大公约数和最小公倍数。
[打印本页]
作者:
1334071171
时间:
2016-7-4 23:24
标题:
输入两个正整数m和n,求其最大公约数和最小公倍数。
输入两个正整数m和n,求其最大公约数和最小公倍数。
作者:
代码是什么
时间:
2016-7-4 23:24
/**
*辗除法:比如:20 和 16 的最大公约数是:4 ;
*也就是说(20-16) 和 16 的最大公约数是4 。
*就是利用这个原来反复执行来求最大公约数的。
*/
import java.io.*;
import java.util.*;
public class GreatestCommonDivisor
{
private int a,b ;
public static void main(String args[])
{
new GreatestCommonDivisor().cal();
}
public void cal()
{
BufferedReader input = new BufferedReader(
new InputStreamReader(System.in));
System.out.println("请输入两个正整数,以空格隔开:");
//获取两个正整数 a 和 b;
try
{
String in = input.readLine();
StringTokenizer tokenizer = new StringTokenizer(in);
a = Integer.parseInt(tokenizer.nextToken());
b = Integer.parseInt(tokenizer.nextToken());
if(a<0 || b<0)
{
System.out.println("1/请输入两个正整数!!!");
System.exit(0);
}
}
catch (Exception e)
{
System.out.println(e);
System.out.println("2/请输入两个正整数!!!");
System.exit(0);
}
// 保存这a、b将来输出时用
int oldA = a;
int oldB = b;
// 为了下面的while循环,如果a>b交换两个数
if (a>b)
{
a = oldB;
b = oldA;
}
//利用辗除法求a、b的最大公约数
int temp = b%a;
while (temp !=0)
{
b = a ;
a = temp ;
temp = b%a;
if(a==0)
{
System.out.println(oldA+"和"+oldB+"的最大公约数是:"+a);
break;
}
}
if (temp == 0)
{
System.out.println(oldA+"和"+oldB+"的最大公约数是:"+a);
System.exit(0);
}
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2