LCM计算

时间:2014-03-31 21:00:54

标签: java biginteger greatest-common-divisor lcm

我为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){}
    }
}

1 个答案:

答案 0 :(得分:0)

你的逻辑部分是错误的。基本上你只是计算给定数字的lcm,但是用户要求找到满足给定条件的最小k。但是你的并不是最小的k。 尝试案例n = 340和m = 230实际ans是1564但你的代码给出7820。

注意:lcm并不总是满足问题中给定条件的最小k。

提示:素数分解m,n并尝试获得ans ...尝试更多案例,你会得到它。