Wednesday, February 4, 2015
How to find the Greatest common divisor of an integer array in java
- In this algorithm we first find the smallest integer in the int array.
- Then we get the modulus for each element in the numbers of the array by dividing smallest integer and add all those modulus together.
- After processing each element in the array we check if the total of modulus is equals to 0. If it is equal to 0 then the GCD is current smallest value if that total is not equals 0 we deduct 1 from the previous smallest value and do the same computation.
- The algorithm will continue with the same operations until total of modulus becomes 0 or until smallest integer is 2.
- If there is any GCD, algorithm will return it or otherwise it will return -1.
See the following implementation of the algorithm.
public class GCD {
public static int findGcd(int... numbers) {
//Find the smallest integer in the number list
int smallest = numbers[0];
for (int i = 1; i < numbers.length; i++) {
if (numbers[i] < smallest) {
smallest = numbers[i];
}
}
//Find the GCD
while (smallest > 1) {
int counter = 0;
int modTot = 0;
while (counter < numbers.length) {
modTot += numbers[counter] % smallest;
counter++;
}
if (modTot == 0) {
//Return the gcd if any
return smallest;
}
//System.out.print(" "+ smallest);
smallest--;
}
//return -1 if there is no gcd
return -1;
}
public static void main(String[] x) {
System.out.println("The GCD of 15 18 42 108 : "+GCD.findGcd(new int[]{15, 18, 42,108}));
}
}
Here is the output for 15, 18, 42 and 108
Here is the output for 3,7 and 12
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.