输入两个正整数m和n,求其最大公约数和最小公倍数。麻烦大家了,谢谢

解决方案 »

  1.   

    搞定!import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner;public class Test { /**
     * @param args
     */
    //分解质因数法求最大公约数
    public Integer split1(Integer num1,Integer num2){
    int max=Math.max(num1, num2);
    int min=Math.min(num1, num2);
    int count=1;
    for(int i=2;i<=max;i++){
    while(max%i==0&&min%i==0){
    count=count*i;
    max=max/i;
    min=min/i;
    }
    }
    return count;
    }
    //最小公倍数
    public Integer split2(Integer num1,Integer num2){
    int max=Math.max(num1, num2);
    int min=Math.min(num1, num2);
    int count=1;
    for(int i=2;i<max;i++){
    while(max%i==0&&min%i==0){
    count=count*i;
    max=max/i;
    min=min/i;
    }
    }
    return count*max*min;
    }
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    Test test=new Test();
    Scanner scan=new Scanner(System.in);
    System.out.println("Please input the first number:");
    Integer num1=scan.nextInt();
    System.out.println("Please input the second number:");
    Integer num2=scan.nextInt();
    Integer c1=test.split1(num1, num2);
    Integer c2=test.split2(num1, num2);
    System.out.println(num1+"和"+num2+"的最大公约数为:"+c1);
    System.out.println(num1+"和"+num2+"的最小公倍数为:"+c2);
    }}
      

  2.   

    这两个包import java.util.ArrayList;
    import java.util.List;
    是不要的,刚在用list试,没有删除这两个包
      

  3.   

    public class Gysgbs {
    // 求m和n的最大公约数
    public static int gongyue(int m, int n) {
    while (m % n != 0) {
    int temp = m % n;
    m = n;
    n = temp;
    }
    return n;
    } // 求m和n的最小公倍数
    public static int gongbei(int m, int n) {
    return m * n / gongyue(m, n);
    } public static void main(String[] args) {
    int m = 8;
    int n = 6;
    System.out.println("公约数: " + gongyue(m, n));
    System.out.println("公倍数: " + gongbei(m, n));
    }
    }
    ----------
    上面代码我已花了半个小时测试并通过,如果感到对您有些帮助,或有其它不清楚的地方,请到我的java技术网站发帖交流,希望本站能成为您java学习路上的一个朋友
      

  4.   

    public static void main(String[] args) { int x = 9;
    int y = 108; int max = Math.max(x, y);
    int min = Math.min(x, y); int temp = -1; for (; temp != 0;) {
    temp = Math.abs(max - min);
    max = max - min;
    } System.out.println(min);//公约数 System.out.println(x * y / min);//公倍数; }
      

  5.   

    小弟写的,写得不好的,请指正。public class CommonDivisor
    {
        public static void main(String args[])
        {
            int a = 3;
            int b = 9;
            int counter = 0;
            int commonDivisor = 0; //公约数
            
            //求最大公约数
            //http://baike.baidu.com/view/47637.htm  最大公约数,求法
            
            if(a>b) counter = b;
                else counter = a;
            for(int i=1; i<=counter; i++)
            {
                if(a%i == 0)
                    if(b%i == 0)
                        commonDivisor = i;
            }
            System.out.println("最大公约数为: " + commonDivisor);
            
            //求最小公倍数
            //http://baike.baidu.com/view/341375.htm  最小公倍数,求法
            System.out.println("最小公倍数为: " + a*b/commonDivisor);
        }
    }