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

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

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

 `// CPP program to find an array element that  ` `// divides all numbers in the array using ` `// naive approach ` `#include ` `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

 ` `

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

 `// CPP Program to find the smallest number ` `// that divides all numbers in an array ` `#include ` `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

 ` `

Output :

```5
```

Time Complexity: O(n)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

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 :

1

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