Count integers in a range which are divisible by their euler totient value

• Last Updated : 08 Apr, 2021

Given 2 integers L and R, the task is to find out the number of integers in the range [L, R] such that they are completely divisible by their Euler totient value.
Examples:

Input: L = 2, R = 3
Output:

*** QuickLaTeX cannot compile formula:

*** Error message:
Error: Nothing to show, formula is empty

(2) = 2 => 2 %

*** QuickLaTeX cannot compile formula:

*** Error message:
Error: Nothing to show, formula is empty

(2) = 0

*** QuickLaTeX cannot compile formula:

*** Error message:
Error: Nothing to show, formula is empty

(3) = 2 => 3 %

*** QuickLaTeX cannot compile formula:

*** Error message:
Error: Nothing to show, formula is empty

(3) = 1
Hence 2 satisfies the condition.
Input: L = 12, R = 21
Output:
Only 12, 16 and 18 satisfy the condition.

Approach: We know that the euler totient function of a number is given as follows: Rearranging the terms, we get: If we take a close look at the RHS, we observe that only 2 and 3 are the primes that satisfy n %

*** QuickLaTeX cannot compile formula:

*** Error message:
Error: Nothing to show, formula is empty

= 0. This is because for primes p1 = 2 and p2 = 3, p1 – 1 = 1 and p2 – 1 = 2. Hence, only numbers of the form 2p3q where p >= 1 and q >= 0 need to be counted while lying in the range [L, R].
Below is the implementation of the above approach:

C++

 // C++ implementation of the above approach.#include  #define ll long longusing namespace std; // Function to return a^nll power(ll a, ll n){    if (n == 0)        return 1;     ll p = power(a, n / 2);    p = p * p;     if (n & 1)        p = p * a;     return p;} // Function to return count of integers// that satisfy n % phi(n) = 0int countIntegers(ll l, ll r){     ll ans = 0, i = 1;    ll v = power(2, i);     while (v <= r) {         while (v <= r) {             if (v >= l)                ans++;            v = v * 3;        }         i++;        v = power(2, i);    }     if (l == 1)        ans++;     return ans;} // Driver Codeint main(){    ll l = 12, r = 21;    cout << countIntegers(l, r);     return 0;}

Java

 // Java implementation of the above approach.class GFG{ // Function to return a^nstatic long power(long a, long n){    if (n == 0)        return 1;     long p = power(a, n / 2);    p = p * p;     if (n%2== 1)        p = p * a;     return p;} // Function to return count of integers// that satisfy n % phi(n) = 0static int countIntegers(long l, long r){     long ans = 0, i = 1;    long v = power(2, i);     while (v <= r)    {        while (v <= r)        {             if (v >= l)                ans++;            v = v * 3;        }         i++;        v = power(2, i);    }     if (l == 1)        ans++;     return (int) ans;} // Driver Codepublic static void main(String[] args){    long l = 12, r = 21;    System.out.println(countIntegers(l, r));}} // This code contributed by Rajput-Ji

Python3

 # Python3 implementation of the approach # Function to return a^ndef power(a, n):     if n == 0:        return 1     p = power(a, n // 2)    p = p * p     if n & 1:        p = p * a     return p # Function to return count of integers# that satisfy n % phi(n) = 0def countIntegers(l, r):     ans, i = 0, 1    v = power(2, i)     while v <= r:         while v <= r:             if v >= l:                ans += 1                         v = v * 3         i += 1        v = power(2, i)         if l == 1:        ans += 1     return ans # Driver Codeif __name__ == "__main__":     l, r = 12, 21    print(countIntegers(l, r))     # This code is contributed# by Rituraj Jain

C#

 // C# implementation of the above approach.using System; class GFG{ // Function to return a^nstatic long power(long a, long n){    if (n == 0)        return 1;     long p = power(a, n / 2);    p = p * p;     if (n % 2 == 1)        p = p * a;     return p;} // Function to return count of integers// that satisfy n % phi(n) = 0static int countIntegers(long l, long r){     long ans = 0, i = 1;    long v = power(2, i);     while (v <= r)    {        while (v <= r)        {             if (v >= l)                ans++;            v = v * 3;        }         i++;        v = power(2, i);    }     if (l == 1)        ans++;     return (int) ans;} // Driver Codepublic static void Main(){    long l = 12, r = 21;    Console.WriteLine(countIntegers(l, r));}} /* This code contributed by PrinciRaj1992 */

PHP

 = $l)$ans++;            $v =$v * 3;        }         $i++;$v = power(2, $i); } if ($l == 1)        $ans++; return$ans;} // Driver Code$l = 12;$r = 21; echo countIntegers($l,$r); // This code is contributed by Ryuga?>

Javascript


Output:
3

My Personal Notes arrow_drop_up