Euler’s Totient Function

Posted: 26 Oct, 2020
Difficulty: Easy


Try Problem

You are given an integer 'N'. Your task is to count the number of integers between 1 and 'N' both inclusive which are coprime to 'N'.

Two numbers are coprime if their greatest common divisor(GCD) is 1.

Here, 1 is considered to be coprime to any number.
For Example:
If the given integer is 9, then the answer would be 6 Because there are six numbers between 1 and 9 both inclusive which are coprime to 9 i.e 1, 2, 4, 5, 7, and 8.
Input Format:
The first line of input contains an integer 'T' representing the number of test cases or queries to be processed.

Then the test case follows.

The only line of each test case contains an integer 'N'.
Output Format:
For each test case, print a single line containing a single integer denoting the total numbers of integers between 1 and 'N'(both inclusive) which are coprime to 'N', in a single line.

The output of each test case will be printed in a separate line.
You don't have to print anything. It has already been taken care of. Just implement the function.     
1 <= T <= 100
1 <= N <= 10 ^ 9

Time Limit: 1 sec.
Approach 1

The better solution is to use Euler’s product formula which states that the total number of integers between 1 and N - 1 inclusive which are coprime to N can be found using this formula Euler Product Formula N * (1 - (1 / p1)) * (1 - (1 / p2)) *.......* (1 - (1 / pk)) where p1, are the prime factors of N.


So now the problem is to find all the prime factors and use the above formula.


To find the prime factors and count the number of integers between 1 and N which are coprime to N below are the steps.



  1. Initially declare a variable total = N.
  2. Then start a loop from p = 2 to sqrt(N) and do the following:
    1. if(N % p == 0) then
      1. While p divides N:
        1. Divide N by p.
      2. total = total - total / p
  3. If N is a prime number and is greater than 1, then:
    1. total = total - total / N
  4. At last, return the total.
Try Problem