求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;
}
这样应该可以
------解决方案--------------------
一楼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));
}
------解决方案--------------------