Open In App
Related Articles

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

Improve Article
Improve
Save Article
Save
Like Article
Like

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. 

Implementation:

C++




// 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;
}


Java




// 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.


Python3




# 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.


C#




// 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.


PHP




<?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
?>


Javascript




<script>
  
// JavaScript 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 (let i = 0; i < n; i++) 
        {
                
            let 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
  
        let a = [ 25, 20, 5, 10, 100 ];
        let n = a.length;
        document.write(findSmallest(a, n));
  
</script>


Output

5

Time Complexity: O(n2)
Auxiliary Space: O(1)

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. 

Implementation:

C++




// 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;
}


Java




// 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.


Python3




# 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.


C#




// 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.


PHP




<?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.
?>


Javascript




<script>
    // Javascript Program to find the
    // smallest number that divides
    // all numbers in an array
      
    // function to find the smallest element
    function min_element(a)
    {
        let min = Number.MAX_VALUE;
        let i;
        for (i = 0; i < a.length; i++)
        {
            if (a[i] < min)
                min = a[i];
        }
           
        return min;
    }
       
    // function to find smallest num
    function findSmallest(a, n)
    {
        // Find the smallest element
        let smallest = min_element(a);
       
        // Check if all array elements
        // are divisible by smallest.
        for (let i = 1; i < n; i++)
        if (a[i] % smallest >= 1)
            return -1;
       
        return smallest;
    }
      
    let a = [25, 20, 5, 10, 100];
    let n = a.length;
    document.write(findSmallest(a, n));
      
    // This code is contributed by divyeshrabadiya07.
</script>


Output

5

Time Complexity: O(n) 
Auxiliary Space: O(1)


Feeling lost in the world of random DSA topics, wasting time without progress? It's time for a change! Join our DSA course, where we'll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 geeks!

Last Updated : 19 Sep, 2023
Like Article
Save Article
Similar Reads
Related Tutorials