Count integers in a range which are divisible by their euler totient value
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*** 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: 3
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 <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
<?php // PHP implementation of the above approach // Function to return a^n function 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 function countIntegers( $l , $r ) { $ans = 0 ; $i = 1; $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 $l = 12; $r = 21; echo countIntegers( $l , $r ); // This code is contributed by Ryuga ?> |
Javascript
<script> // JavaScript implementation of the above approach. // Function to return a^n function power(a , n) { if (n == 0) return 1; var p = power(a, parseInt(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 function countIntegers(l , r) { var ans = 0, i = 1; var 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 parseInt( ans); } // Driver Code var l = 12, r = 21; document.write(countIntegers(l, r)); // This code contributed by Rajput-Ji </script> |
3
Please Login to comment...