A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

最佳答案

查看完整内容

/** *辗除法:比如: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 InputS ...

1 个回复

倒序浏览
/**
*辗除法:比如: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);
   }
}
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马