我为spoj中给出的问题编写代码来计算LCM。我计算了2个数字的gcd,我将2个数字的乘法除以gcd,得到2个数字的lcm,但它显示错误答案。
问题出在http://www.spoj.com/problems/WPC5I/
import java.math.BigInteger;
import java.util.Scanner;
class Lcm1 {
public static void main(String args[]) throws Throwable {
try {
Scanner s = new Scanner(System.in);
int siz = s.nextInt();
for(int i = 0; i< siz; i++) {
BigInteger a = s.nextBigInteger(), b = s.nextBigInteger();
System.out.println((a.multiply(b)).divide(a.gcd(b)));
}
}
catch(Exception e){}
}
}
答案 0 :(得分:0)
你的逻辑部分是错误的。基本上你只是计算给定数字的lcm,但是用户要求找到满足给定条件的最小k。但是你的并不是最小的k。 尝试案例n = 340和m = 230实际ans是1564但你的代码给出7820。
注意:lcm并不总是满足问题中给定条件的最小k。
提示:素数分解m,n并尝试获得ans ...尝试更多案例,你会得到它。