Skip to content
Related Articles
Open in App
Not now

Related Articles

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

Improve Article
Save Article
  • Difficulty Level : Basic
  • Last Updated : 02 Aug, 2022
Improve Article
Save Article

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)


My Personal Notes arrow_drop_up
Related Articles

Start Your Coding Journey Now!