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

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 = 10Output :2

In range [1, 10], the numbers 4 and 8 are divisible by all the array elements.

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

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), as we will be using nested loops, outer loop for iterating from L to R and inner loop for traversing the elements of the array.**Auxiliary Space: **O(1), as we will not be using any extra space.

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 <bits/stdc++.h>` `using` `namespace` `std;` `// Function to find the lcm of array` `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` `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[0]);` ` ` `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[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()` `{` ` ` `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

`<?php` `// PHP program to count numbers in a range` `// that are divisible by all array elements` `// Function to calculate gcd` `function` `__gcd(` `$a` `, ` `$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` `function` `findLCM(` `$arr` `, ` `$n` `)` `{` ` ` `$lcm` `= ` `$arr` `[0];` ` ` `// 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

`<script>` `// Javascript program to count numbers in a range` `// that are divisible by all array elements ` `// Function to calculate gcd` ` ` `function` `__gcd(a , 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` ` ` `function` `findLCM(arr , n) {` ` ` `var` `lcm = arr[0];` ` ` `// Iterate in the array` ` ` `for` `(i = 1; i < n; i++) {` ` ` `// Find lcm` ` ` `lcm = parseInt((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` ` ` `var` `lcm = findLCM(arr, n);` ` ` `// Return the count of numbers` ` ` `var` `count = parseInt((r / lcm) - ((l - 1) / lcm));` ` ` `return` `count;` ` ` `}` ` ` `// Driver Code` ` ` ` ` `var` `arr = [ 1, 4, 2 ];` ` ` `var` `n = arr.length;` ` ` `var` `l = 1, r = 10;` ` ` `document.write(countNumbers(arr, n, l, r));` `// This code contributed by umadevi9616` `</script>` |

**Output**

0

**Complexity Analysis:**

**Time Complexity: O(N*log(max element of array))**, as we are using a loop for traversing N times and gcd function to find the lcm in each traversal.**Auxiliary Space: O(1),**as we are not using any extra space.