Java lcm lcm(int a, int b)

Here you can find the source of lcm(int a, int b)

Description

Computes the least common multiple (LCM) of two integers.

License

Apache License

Parameter

Parameter Description
a the first integer.
b the second integer.

Exception

Parameter Description
ArithmeticException when the result is too big to fit into an int.

Return

the least common multiple of a and b , or 0 , if either a or b is 0 .

Declaration

public static int lcm(int a, int b) 

Method Source Code

//package com.java2s;
/*/*from  www  . j  a v  a2 s.  c  o  m*/
 * $Id: Util.java 169 2011-03-03 18:45:00Z ahto.truu $
 *
 *
 *
 * Copyright 2008-2011 GuardTime AS
 *
 * This file is part of the GuardTime client SDK.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

public class Main {
    /**
     * Computes the least common multiple (LCM) of two integers.
     * <p>
     * Least common multiple is the smallest positive integer that can be
     * divided by both numbers without a remainder.
     *
     * @param a
     *            the first integer.
     * @param b
     *            the second integer.
     * @return the least common multiple of {@code a} and {@code b}, or
     *         {@code 0}, if either {@code a} or {@code b} is {@code 0}.
     * @throws ArithmeticException
     *             when the result is too big to fit into an {@code int}.
     */
    public static int lcm(int a, int b) {
        if (a == 0 || b == 0) {
            return 0;
        }
        a = Math.abs(a) / gcd(a, b);
        b = Math.abs(b);
        if (a > Integer.MAX_VALUE / b) {
            throw new ArithmeticException("Integer overflow");
        }
        return a * b;
    }

    /**
     * Computes the greatest common divisor (GCD) of two integers.
     * <p>
     * Greatest common divisor is the largest integer that divides both numbers
     * without remainder.
     *
     * @param a
     *            the first integer.
     * @param b
     *            the second integer.
     * @return the greatest common divisor of {@code a} and {@code b}, or
     *         {@code 0}, if both {@code a} and {@code b} are {@code 0}.
     */
    public static int gcd(int a, int b) {
        a = Math.abs(a);
        b = Math.abs(b);
        while (a > 0) {
            int c = b % a;
            b = a;
            a = c;
        }
        return b;
    }
}

Related

  1. lcm(int a, int b)
  2. lcm(int a, int b)
  3. lcm(int a, int b)
  4. lcm(int a, int b)
  5. lcm(int a, int b)
  6. LCM(int m, int n)
  7. lcm(int m, int n)
  8. lcm(int n, int m)
  9. lcm(int num1, int num2)