Open in App
Not now

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

• Difficulty Level : Basic
• Last Updated : 02 Aug, 2022

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

 ``

## Javascript

 ``

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

 ``

## Javascript

 ``

Output

`5`

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

My Personal Notes arrow_drop_up
Related Articles