Here you can find the source of lcm(int a, int b)
Parameter | Description |
---|---|
a | the first integer. |
b | the second integer. |
Parameter | Description |
---|---|
ArithmeticException | when the result is too big to fit into an int. |
public static int lcm(int a, int b)
//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; } }