Package de.tilman_neumann.jml.gcd
Class Gcd31
java.lang.Object
de.tilman_neumann.jml.gcd.Gcd31
public class Gcd31
extends java.lang.Object
GCD implementations for 32-bit integers.
The binary gcd is much faster than the Euclidean, and also faster than the built-in BigInteger gcd().
-
Constructor Summary
Constructors Constructor Description Gcd31()
-
Method Summary
Modifier and Type Method Description int
gcd(int a, int b)
Faster binary gcd adapted from OpenJdk's MutableBigInteger.binaryGcd(int, int).java.lang.Integer
gcd(java.util.Collection<java.lang.Integer> arguments)
GCD of all arguments.int
gcd_binary1(int m, int n)
Binary gcd implementation.int
gcd_euclid_withDivision(int m, int n)
Greatest common divisor of the given two arguments.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Constructor Details
-
Gcd31
public Gcd31()
-
-
Method Details
-
gcd_euclid_withDivision
public int gcd_euclid_withDivision(int m, int n)Greatest common divisor of the given two arguments. Euclid's algorithm implementation with division.- Parameters:
m
-n
-- Returns:
- gcd(m, n)
-
gcd_binary1
public int gcd_binary1(int m, int n)Binary gcd implementation.- Parameters:
m
-n
-- Returns:
- gcd(m, n)
-
gcd
public int gcd(int a, int b)Faster binary gcd adapted from OpenJdk's MutableBigInteger.binaryGcd(int, int).- Parameters:
a
-b
-- Returns:
- gcd(a, b)
-
gcd
public java.lang.Integer gcd(java.util.Collection<java.lang.Integer> arguments)GCD of all arguments.- Parameters:
arguments
-- Returns:
- gcd of all arguments
-