日期:2014-05-20 浏览次数:20726 次
int m = a, n = b; while (n != 0){ if (m != n){ int k = m % n; m = n; n = k; } }
------解决方案--------------------
a,b不能没0,注意加约束。
------解决方案--------------------
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); } }
------解决方案--------------------
你这样执行完 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语句放在一个方法中执行。