Related Articles
Count numbers in a range that are divisible by all array elements
• Difficulty Level : Basic
• Last Updated : 07 Jan, 2019

Given N numbers and two numbers L and R., the task is to print the count of numbers in the range [L, R] which are divisible by all numbers of the array.

Examples:

Input: a[] = {1, 4, 2], L = 1, R = 10
Output : 2
In range [1, 10], the numbers 4 and 8 are divisible all array elements.

Input : a[] = {1, 3, 2], L = 7, R = 11
Output : 0

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

A naive approach is to iterate from L to R and count the numbers which are divisible by all of the array elements.

Time Complexity: O((R-L) * N)

An efficient approach is to find the LCM of N numbers and then count the numbers that are divisible by LCM in range L and R. The numbers divisible by LCM till R are R/LCM. So using exclusion principle, the count will be (R/LCM – L-1/LCM).

Below is the implementation of the above approach.

## C++

 `// C++ program to count numbers in a range ``// that are divisible by all array elements``#include ``using` `namespace` `std;`` ` `// Function to find the lcm of array``int` `findLCM(``int` `arr[], ``int` `n)``{``    ``int` `lcm = arr;`` ` `    ``// Iterate in the array``    ``for` `(``int` `i = 1; i < n; i++) {`` ` `        ``// Find lcm``        ``lcm = (lcm * arr[i]) / __gcd(arr[i], lcm);``    ``}`` ` `    ``return` `lcm;``}`` ` `// Function to return the count of numbers``int` `countNumbers(``int` `arr[], ``int` `n, ``int` `l, ``int` `r)``{`` ` `    ``// Function call to find the``    ``// LCM of N numbers``    ``int` `lcm = findLCM(arr, n);`` ` `    ``// Return the count of numbers``    ``int` `count = (r / lcm) - ((l - 1) / lcm);``}`` ` `// Driver Code``int` `main()``{``    ``int` `arr[] = { 1, 4, 2 };``    ``int` `n = ``sizeof``(arr) / ``sizeof``(arr);``    ``int` `l = 1, r = 10;`` ` `    ``cout << countNumbers(arr, n, l, r);``    ``return` `0;``}`

## Java

 `// Java program to count numbers in a range ``// that are divisible by all array elements``class` `GFG``{``     ` `// Function to calculate gcd``static` `int` `__gcd(``int` `a, ``int` `b)``{``       ` `    ``// Everything divides 0 ``    ``if` `(a == ``0` `|| b == ``0``)``        ``return` `0``;``   ` `    ``// base case``    ``if` `(a == b)``        ``return` `a;``   ` `    ``// a is greater``    ``if` `(a > b)``        ``return` `__gcd(a - b, b);``           ` `    ``return` `__gcd(a, b - a);``}``     ` `// Function to find the lcm of array``static` `int` `findLCM(``int` `arr[], ``int` `n)``{``    ``int` `lcm = arr[``0``];`` ` `    ``// Iterate in the array``    ``for` `(``int` `i = ``1``; i < n; i++) ``    ``{`` ` `        ``// Find lcm``        ``lcm = (lcm * arr[i]) / __gcd(arr[i], lcm);``    ``}`` ` `    ``return` `lcm;``}`` ` `// Function to return the count of numbers``static` `int` `countNumbers(``int` `arr[], ``int` `n, ``                        ``int` `l, ``int` `r)``{`` ` `    ``// Function call to find the``    ``// LCM of N numbers``    ``int` `lcm = findLCM(arr, n);`` ` `    ``// Return the count of numbers``    ``int` `count = (r / lcm) - ((l - ``1``) / lcm);`` ` `    ``return` `count;``}`` ` `// Driver Code``public` `static` `void` `main(String args[])``{``    ``int` `arr[] = { ``1``, ``4``, ``2` `};``    ``int` `n = arr.length;``    ``int` `l = ``1``, r = ``10``;`` ` `    ``System.out.println(countNumbers(arr, n, l, r));``}``}`` ` `// This code is contributed by Mukul Singh`

## Python3

 `# Python program to count numbers in ``# a range that are divisible by all``# array elements``import` `math`` ` `# Function to find the lcm of array``def` `findLCM(arr, n):`` ` `    ``lcm ``=` `arr[``0``];`` ` `    ``# Iterate in the array``    ``for` `i ``in` `range``(``1``, n ``-` `1``): `` ` `        ``# Find lcm``        ``lcm ``=` `(lcm ``*` `arr[i]) ``/` `math.gcd(arr[i], lcm);`` ` `    ``return` `lcm;`` ` `# Function to return the count of numbers``def` `countNumbers(arr, n, l, r):`` ` `    ``# Function call to find the``    ``# LCM of N numbers``    ``lcm ``=` `int``(findLCM(arr, n));``     ` `    ``# Return the count of numbers``    ``count ``=` `(r ``/` `lcm) ``-` `((l ``-` `1``) ``/` `lcm);``    ``print``(``int``(count));`` ` `# Driver Code``arr ``=` `[``1``, ``4``, ``2``];``n ``=` `len``(arr);``l ``=` `1``;``r ``=` `10``;`` ` `countNumbers(arr, n, l, r);`` ` `# This code is contributed ``# by Shivi_Aggarwal`

## C#

 `// C# program to count numbers in a range ``// that are divisible by all array elements ``using` `System;`` ` `class` `GFG ``{ ``     ` `// Function to calculate gcd ``static` `int` `__gcd(``int` `a, ``int` `b) ``{ ``         ` `    ``// Everything divides 0 ``    ``if` `(a == 0 || b == 0) ``        ``return` `0; ``     ` `    ``// base case ``    ``if` `(a == b) ``        ``return` `a; ``     ` `    ``// a is greater ``    ``if` `(a > b) ``        ``return` `__gcd(a - b, b); ``             ` `    ``return` `__gcd(a, b - a); ``} ``     ` `// Function to find the lcm of array ``static` `int` `findLCM(``int` `[]arr, ``int` `n) ``{ ``    ``int` `lcm = arr; `` ` `    ``// Iterate in the array ``    ``for` `(``int` `i = 1; i < n; i++) ``    ``{ `` ` `        ``// Find lcm ``        ``lcm = (lcm * arr[i]) / __gcd(arr[i], lcm); ``    ``} `` ` `    ``return` `lcm; ``} `` ` `// Function to return the count of numbers ``static` `int` `countNumbers(``int` `[]arr, ``int` `n, ``                        ``int` `l, ``int` `r) ``{ `` ` `    ``// Function call to find the ``    ``// LCM of N numbers ``    ``int` `lcm = findLCM(arr, n); `` ` `    ``// Return the count of numbers ``    ``int` `count = (r / lcm) - ((l - 1) / lcm); `` ` `    ``return` `count; ``} `` ` `// Driver Code ``public` `static` `void` `Main() ``{ ``    ``int` `[]arr = { 1, 4, 2 }; ``    ``int` `n = arr.Length; ``    ``int` `l = 1, r = 10; `` ` `    ``Console.WriteLine(countNumbers(arr, n, l, r)); ``} ``} `` ` `// This code is contributed by Ryuga `

## PHP

 ` ``\$b``)``        ``return` `__gcd(``\$a` `- ``\$b``, ``\$b``);``         ` `    ``return` `__gcd(``\$a``, ``\$b` `- ``\$a``);``}``     ` `// Function to find the lcm of array``function` `findLCM(``\$arr``, ``\$n``)``{``    ``\$lcm` `= ``\$arr``;`` ` `    ``// Iterate in the array``    ``for` `(``\$i` `= 1; ``\$i` `< ``\$n``; ``\$i``++) ``    ``{`` ` `        ``// Find lcm``        ``\$lcm` `= (``\$lcm` `* ``\$arr``[``\$i``]) / ``                 ``__gcd(``\$arr``[``\$i``], ``\$lcm``);``    ``}`` ` `    ``return` `\$lcm``;``}`` ` `// Function to return the count of numbers``function` `countNumbers(``\$arr``, ``\$n``, ``\$l``, ``\$r``)``{`` ` `    ``// Function call to find the``    ``// LCM of N numbers``    ``\$lcm` `= findLCM(``\$arr``, ``\$n``);`` ` `    ``// Return the count of numbers``    ``\$count` `= (int)(``\$r` `/ ``\$lcm``) -``             ``(int)((``\$l` `- 1) / ``\$lcm``);`` ` `    ``return` `\$count``;``}`` ` `// Driver Code``\$arr` `= ``array``(1, 4, 2);``\$n` `= sizeof(``\$arr``);``\$l` `= 1; ``\$r` `= 10;``echo` `countNumbers(``\$arr``, ``\$n``, ``\$l``, ``\$r``);`` ` `// This code is contributed``// by Akanksha Rai``?>`
Output:
```2
``` My Personal Notes arrow_drop_up