日期:2014-05-20  浏览次数:20712 次

求12和18的最小公倍数;求大神
package org.circle;

public class MinCommonMultiple
{ public static void main(String[] args)
{  
int m =6,n=9;
int result=1;
for(int i=1;i<=m*n;i++)
{

if()
}

}
}代码写到if这就不知道怎么写了,麻烦帮我补充完整。3Q

------解决方案--------------------
if(i%m==0 && i%n == 0)
{
return i;
}

这样应该可以
------解决方案--------------------
引用:
void不能返回值的、

一楼if条件是正确的,已经拿到正确的i了,语句块里你想写什么都行,
你可以打印出来:System.out.println(i)
------解决方案--------------------
由于你写的main方法是VOID的。所以就不return了。
#2的逻辑是通的,可以这么写:
if (i%m==0 && i%n == 0)
{
    System.out.print("最小公倍数是"+i);
    System.exit(0);
}

================================
还有,你定义的这个result貌似没用到。
另外,i的初值可以直接赋n。因为最小公倍数必须是大于这两个数,这样省去多次不必要的循环。
------解决方案--------------------
额。。。= =、3楼已经有回复了。。。我打字有点慢哈~
------解决方案--------------------
一般的方法是迭代相减求出最大公约数然后相乘较小的数。
你这样的话效率有可能太低
------解决方案--------------------
引用:
一般的方法是迭代相减求出最大公约数然后相乘较小的数。
你这样的话效率有可能太低

请问迭代相减如何求出最大公约数?
而且最小公倍数也不是最大公约数*较小的数吧:
比如4和10,最大公约数是2,最小公倍数也不是2*4啊。
------解决方案--------------------
此处最优算法应该是:
1:用欧几里得算法(辗转相除)取得两数的最大公约数;
2:两数相乘,除以最大公约数,就是最小公倍数。
------解决方案--------------------
辗转相除,月经题:

public static int zhanzhuan(int m,int n){
return m%n==0?n:zhanzhuan(n, m%n);
}
public static void main(String[] args) {
System.out.println(18*12/zhanzhuan(18, 12));
}

------解决方案--------------------