Related Articles

# Count numbers in a range that are divisible by all array elements

• Difficulty Level : Basic
• Last Updated : 27 May, 2021

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 the elements of the array.
Examples:

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

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 the range  [L, R]. The numbers divisible by LCM till R are R/LCM. So using the 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``?>`

## Javascript

 ``
Output:
`2` My Personal Notes arrow_drop_up