Java gcd gcd(long[] array)

Here you can find the source of gcd(long[] array)

Description

Greatest Common Divisor according to Euclid's algorithm

License

Open Source License

Parameter

Parameter Description
array a parameter

Declaration

public static long gcd(long[] array) 

Method Source Code

//package com.java2s;
/*/*from   w w w.  j a  v  a  2 s  .  c o  m*/
 Copyright 2008,
 CCTC - Computer Science and Technology Center
 IBB-DEB - Institute for Biotechnology and  Bioengineering - Department of Biological Engineering
 University of Minho

 This is free software: you can redistribute it and/or modify
 it under the terms of the GNU Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 (at your option) any later version.

 This code is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU Public License for more details.

 You should have received a copy of the GNU Public License
 along with this code.  If not, see <http://www.gnu.org/licenses/>.

 Created inside the SysBio Research Group (http://sysbio.di.uminho.pt)
 University of Minho
 */

import java.util.Arrays;

public class Main {
    /**
     * Greatest Common Divisor according to Euclid's algorithm
     * 
     * @param array
     * @return
     */
    public static long gcd(long[] array) {

        // local vars
        int listSize = array.length;
        long a, b, gcd1;
        long ONE = (long) 1;

        long[] arrayTmp = array.clone();

        Arrays.sort(arrayTmp);
        if (listSize == 0 || arrayTmp[listSize - 1] == 0) {
            return (ONE);
        }

        a = arrayTmp[0];
        gcd1 = a;
        for (int i = 1; i < listSize; i++) {
            if (gcd1 == 1) {
                break;
            }
            gcd1 = a;
            a = arrayTmp[i];
            b = gcd1;
            while (b != 0) {
                gcd1 = b;
                b = a % gcd1;
                a = gcd1;
            }
            // System.out.println(gcd1);
        }
        return (gcd1);
    }
}

Related

  1. gcd(long a, long b)
  2. gcd(long u, long v)
  3. gcd(long x, long y)
  4. gcd(long x, long y)
  5. gcd(long[] array)
  6. gcd1(long given1, long given2)
  7. GCDHelper(long a, long b)
  8. gcdMultiple(int[] nums)
  9. gcdPositive(int a, int b)