Count integers in a range which are divisible by their euler totient value (original) (raw)

Last Updated : 11 Jul, 2025

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: 1
(2) = 2 => 2 % (2) = 0
(3) = 2 => 3 % (3) = 1
Hence 2 satisfies the condition.
Input: L = 12, R = 21
Output: 3
Only 12, 16 and 18 satisfy the condition.

Approach: We know that the euler totient function of a number is given as follows:

\phi(n) = n * (1 - \frac{1}{p_1}) * (1 - \frac{1}{p_2}) * ... * (1 - \frac{1}{p_k})

Rearranging the terms, we get:

\frac{n}{\phi(n)} = \frac{p_1 * p_2 * ... * p_k}{(p_1 - 1) * (p_2 -1) * ... * (p_k -1)}

If we take a close look at the RHS, we observe that only 2 and 3 are the primes that satisfy n % = 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 <bits/stdc++.h>

#define ll long long using namespace std;

// Function to return a^n ll 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) = 0 int 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 Code int 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^n static 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) = 0 static 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 Code public 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^n

def 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) = 0

def 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 Code

if 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^n static 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) = 0 static 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 Code public static void Main() { long l = 12, r = 21; Console.WriteLine(countIntegers(l, r)); } }

/* This code contributed by PrinciRaj1992 */

PHP

p=power(p = power(p=power(a, $n / 2); p=p = p=p * $p; if ($n & 1) p=p = p=p * $a; return $p; } // Function to return count of integers // that satisfy n % phi(n) = 0 function countIntegers($l, $r) { $ans = 0 ; $i = 1; v=power(2,v = power(2, v=power(2,i); while ($v <= $r) { while ($v <= $r) { if ($v >= $l) $ans++; v=v = v=v * 3; } $i++; v=power(2,v = power(2, 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

`