我刚发布了一个关于我的LCM课程的问题,但我改变了我的代码,但它仍然无效。 我插入(10,4)所以程序应该打印20但它只打印0.也许在初始化时出现了问题?我将“int multiple”更改为几个不同的值,并且该方法打印出初始化为“multiple”的值。 这是我的固定代码。谢谢。
public class LCM {
public static int calcLCM(int num1, int num2){ //num1=10, num2=4; their LCM is 20
//num1 has to be greator than num2
int multiple=0;
for(int i=1;i<=num1;i++)
{
if(num2==num1)
{
multiple=num2;
}
else if(num2*i>num1)
{
i++;
num1=num1*i;
}
else if(num2*i<num1){
i++;
num2=num2*i;
}
}
return multiple;
}
}
答案 0 :(得分:0)
在循环内部以及循环条件本身中递增i
。你不需要它,它会导致你的循环跳过值。
此外,您将num1
和num2
与i
相乘。我认为你真正想做的是你想用它们的原始值来增加它们。
答案 1 :(得分:0)
算法中的一点变化将给出正确答案 -
public class LCM
{
public static int calcLCM(int num1, int num2)
{
//num1=10, num2=4; their LCM is 20
//num1 has to be greator than num2
int i=1;
while((num1*i)%num2!=0)
{
i++;
}
return num1*i;
}
public static void main(String[] args)
{
System.out.println(calcLCM(10,2));
}
}