Find an array element such that all elements are divisible by it

Given an array of numbers, find the number among them such that all numbers are divisible by it. If not possible print -1.

Examples:

Input : arr = {25, 20, 5, 10, 100} 
Output : 5 
Explanation : 5 is an array element
 which divides all numbers.

Input : arr = {9, 3, 6, 2, 15} 
Output : -1 
Explanation : No numbers are divisible
by any array element.



Method 1:(naive)
A normal approach will be to take every element and check for division with all other elements. If all the numbers are divisible then return the number.

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// CPP program to find an array element that 
// divides all numbers in the array using
// naive approach
#include <bits/stdc++.h>
using namespace std;
  
// function to find smallest num
int findSmallest(int a[], int n)
{
    // traverse for all elements
    for (int i = 0; i < n; i++) {
          
        int j;
        for (j = 0; j < n; j++) 
            if (a[j] % a[i]) 
                break;
  
        // stores the minimum if
        // it divides all
        if (j == n)
            return a[i];
    }
  
    return -1;
}
  
// driver code
int main()
{
    int a[] = { 25, 20, 5, 10, 100 };
    int n = sizeof(a) / sizeof(int);
    cout << findSmallest(a, n);
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to find an array element
// that divides all numbers in the array 
// using naive approach
import java.io.*;
  
class GFG {
      
    // function to find smallest num
    static int findSmallest(int a[], int n)
    {
        // traverse for all elements
        for (int i = 0; i < n; i++) 
        {
              
            int j;
            for (j = 0; j < n; j++) 
                if (a[j] % a[i]>=1
                    break;
      
            // stores the minimum if
            // it divides all
            if (j == n)
                return a[i];
        }
      
        return -1;
    }
      
    // driver code
    public static void main(String args[])
    {
        int a[] = { 25, 20, 5, 10, 100 };
        int n = a.length;
        System.out.println(findSmallest(a, n));
    }
}
  
  
// This code is contributed by Nikita Tiwari.

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python 3 program to find an array
# element that divides all numbers
# in the array using naive approach
  
# Function to find smallest num
def findSmallest(a, n) :
      
    # Traverse for all elements
    for i in range(0, n ) :
          
        for j in range(0, n) :
              
            if ((a[j] % a[i]) >= 1) :
                break
  
        # Stores the minimum 
        # if it divides all
        if (j == n - 1) :
            return a[i]
                  
    return -1
  
  
# Driver code
a = [ 25, 20, 5, 10, 100 ]
n = len(a)
print(findSmallest(a, n))
  
  
# This code is contributed by Nikita Tiwari.

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to find an array element
// that divides all numbers in the array 
// using naive approach
using System;
  
class GFG {
      
    // function to find smallest num
    static int findSmallest(int []a, int n)
    {
        // traverse for all elements
        for (int i = 0; i < n; i++) 
        {
              
            int j;
            for (j = 0; j < n; j++) 
                if (a[j] % a[i] >= 1) 
                    break;
      
            // stores the minimum if
            // it divides all
            if (j == n)
                return a[i];
        }
      
        return -1;
    }
      
    // Driver code
    public static void Main()
    {
        int []a = { 25, 20, 5, 10, 100 };
        int n = a.Length;
        Console.WriteLine(findSmallest(a, n));
    }
}
  
  
// This code is contributed by vt_m.

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP program to find an array 
// element that divides all 
// numbers in the array using
// naive approach
  
// function to find smallest num
function findSmallest($a, $n)
{
      
    // traverse for all elements
    for ($i = 0; $i < $n; $i++) 
    {
        $j;
        for ($j = 0; $j < $n; $j++) 
            if ($a[$j] % $a[$i]) 
                break;
  
        // stores the minimum if
        // it divides all
        if ($j == $n)
            return $a[$i];
    }
  
    return -1;
}
  
    // Driver Code
    $a = array( 25, 20, 5, 10, 100 );
    $n = sizeof($a);
    echo findSmallest($a, $n);
  
// This code is contributed by nitin mittal
?>

chevron_right


Output :

5

Time Complexity: O(n^2)

Method 2 : (Efficient)
An efficient approach is to find smallest of all numbers, and check if it divides all the other numbers, if yes then the smallest number will be the required number.

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// CPP Program to find the smallest number
// that divides all numbers in an array
#include <bits/stdc++.h>
using namespace std;
  
// function to find smallest num
int findSmallest(int a[], int n)
    // Find the smallest element
    int smallest = *min_element(a, a+n);
      
    // Check if all array elements
    // are divisible by smallest.
    for (int i = 1; i < n; i++)     
        if (a[i] % smallest) 
            return -1;
  
    return smallest;
}
  
// Driver code
int main()
{
    int a[] = { 25, 20, 5, 10, 100 };
    int n = sizeof(a) / sizeof(int);    
    cout << findSmallest(a, n);    
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java Program to find the 
// smallest number that divides
// all numbers in an array
import java.io.*;
  
class GFG {
  
    // function to find the smallest element
    static int min_element(int a[])
    {
        int min = Integer.MAX_VALUE, i;
        for (i = 0; i < a.length; i++) 
        {
            if (a[i] < min)
                min = a[i];
        }
          
        return min;
    }
      
    // function to find smallest num
    static int findSmallest(int a[], int n) 
    {
        // Find the smallest element
        int smallest = min_element(a);
      
        // Check if all array elements
        // are divisible by smallest.
        for (int i = 1; i < n; i++)
        if (a[i] % smallest >= 1)
            return -1;
      
        return smallest;
    }
      
    // Driver code
    public static void main(String args[])
    {
        int a[] = {25, 20, 5, 10, 100};
        int n = a.length;
        System.out.println(findSmallest(a, n));
    }
}
  
// This code is contributed by Nikita Tiwari.

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 Program to find the
# smallest number that divides
# all numbers in an array
  
# Function to find the smallest element
def min_element(a) :
      
    m = 10000000
      
    for i in range(0, len(a)) :
          
        if (a[i] < m) :
            m = a[i]
      
    return m
  
# Function to find smallest num
def findSmallest(a, n) :
      
    # Find the smallest element
    smallest = min_element(a)
      
    # Check if all array elements
    # are divisible by smallest.
    for i in range(1, n) :
          
        if (a[i] % smallest >= 1) :
            return -1
  
    return smallest
  
  
# Driver code
  
a = [ 25, 20, 5, 10, 100 ]
n = len(a)
print(findSmallest(a, n))
  
  
# This code is contributed by Nikita Tiwari.

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# Program to find the 
// smallest number that divides
// all numbers in an array
using System;
  
class GFG {
  
    // function to find the smallest element
    static int min_element(int []a)
    {
        int min = int.MaxValue;
        int i;
        for (i = 0; i < a.Length; i++) 
        {
            if (a[i] < min)
                min = a[i];
        }
          
        return min;
    }
      
    // function to find smallest num
    static int findSmallest(int []a, int n) 
    {
        // Find the smallest element
        int smallest = min_element(a);
      
        // Check if all array elements
        // are divisible by smallest.
        for (int i = 1; i < n; i++)
        if (a[i] % smallest >= 1)
            return -1;
      
        return smallest;
    }
      
    // Driver code
    public static void Main()
    {
        int []a = {25, 20, 5, 10, 100};
        int n = a.Length;
        Console.WriteLine(findSmallest(a, n));
    }
}
  
// This code is contributed by vt_m.

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP Program to find the smallest number
// that divides all numbers in an array
  
// function to find smallest num
function findSmallest($a, $n)
{
      
    // Find the smallest element
    $smallest = min($a);
      
    // Check if all array elements
    // are divisible by smallest.
    for ($i = 1; $i < $n; $i++) 
        if ($a[$i] % $smallest
            return -1;
  
    return $smallest;
}
  
    // Driver Code
    $a = array(25, 20, 5, 10, 100);
    $n =count($a);
    echo findSmallest($a, $n); 
  
// This code is contributed by anuj_67.
?>

chevron_right



Output :

5

Time Complexity: O(n)



My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.



Improved By : nitin mittal, vt_m



Article Tags :
Practice Tags :


Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.