我的程序代码是这样写的,应该怎样改才能完成这个功能?
import java.util.*;
public class lianxi06
{
public static void main(String args[])
{
Scanner s = new Scanner(System.in);

System.out.println("请输入第一个整数:");

int a=s.nextInt();

System.out.println("请输入第二个整数:");

int b=s.nextInt();

int m,n;

while(b!=0)
{
if(a==b)
{
m=a;
}else{
int k=a%b;
a=b;
b=k;
}
m=a;
}
System.out.println("两个数的最大公约数是:"+m);
System.out.println("最小公倍数是:"+a*b/m);
}
}

解决方案 »

  1.   

    程序两个问题。
    int m,n;没初始化。
    System.out.println("最小公倍数是:"+a*b/m);
    a,b已经被修改了,所以得不到正确结果。
    改成下面就好了。 int m = a, n = b;
    while (n != 0){
    if (m != n){
            int k = m % n;
    m = n;
    n = k;
    }
    }
      

  2.   


    import java.util.*;
    public class lianxi06
    {
    public static void main(String args[])
    {
    Scanner s = new Scanner(System.in); System.out.println("请输入第一个整数:"); int a=s.nextInt(); System.out.println("请输入第二个整数:"); int b=s.nextInt(); int m=-1,n=b; while(b!=0)
    {
    if(a==b)
    {
    m=a;
    }else{
    int k=a%b;
    a=b;
    b=k;
    }
    m=a;
    }
    System.out.println("两个数的最大公约数是:"+m);
    System.out.println("最小公倍数是:"+a*n/m);
    }
    }
      

  3.   

    你这样执行完 a和b的值都被改变了 b执行到最后肯定是0才结束的
    修改如下:
     你把int m,n;  这句改成int m=0,n=a,c=b;  
    最后  System.out.println("最小公倍数是:"+a*b/m);里的 a*b换成 n*c 就成!
    建议最好是把if语句放在一个方法中执行。
      

  4.   

    int m = a, n = b;
            while (n != 0){
                if (m != n){
                        int k = m % n;
                    m = n;
                    n = k;
                }
            }
    在这里为什么不用对a,b进行判断比如第一个数是6第二个数是a
    <b
    那不就是a%8吗?但实际还是能进行的,我就这里还不明白!