2014-03-31 70 views
0

我爲在spoj中給出的問題編寫代碼來計算LCM。我計算了2個數字的gcd,並且將2個數字的乘法與gcd相乘,得到2個數字的lcm,但是它顯示了錯誤的答案。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

爲什麼使用multiply()和divide()方法?與*和/相比似乎毫無意義。你也應該發佈你的gcd()方法,那裏可能有問題 –

+0

目前看起來很好,你能給出一個錯誤結果的例子嗎? – Marco13

+0

@Rishub我們不能使用*和/ for BigInteger – Shashank

回答

0

你的邏輯是部分wrong.Basically你只是計算給定數字的LCM,但用戶要求找到至少k給到滿足你condition.but沒有至少k。 嘗試案例n = 340和m = 230實際ans是1564,但是你的代碼給出了7820.

注意:lcm並不總是滿足問題中給定條件的最小k。

提示:素因子m,n,並嘗試獲得答案...嘗試更多的案例,你會得到它。