Related Articles

# Perfect totient number

• Last Updated : 16 Jul, 2021

A Perfect totient number is an integer that is equal to the sum of its iterated totients. Perfect totient number is denoted by For example: , Now,  and 9 == 6 + 2 + 1, Therefore, 9 is a perfect totient number.

### Check if N is a Perfect totient number

Given an integer N, the task is to check N is a Perfect totient number.
Examples:

Input: N = 9
Output: Yes
Input: N = 10
Output: No

Approach: The idea is to find the Euler Totient Value of the given number, suppose we get the Euler Totient Value of N as V, then we will again find the Euler Totient Value of V until the new Euler Totient Value V becomes 1. We will also keep the sum of all the Euler Totient Value values V we got till now and check if the sum is equal to N or not. If equal then the given number is a perfect Euler Totient number.
Below is the implementation of the above approach:

## C++

 // C++ implementation to find// the number of digits in// a Nth fibonacci number #include using namespace std; // Function to find the Totient// number of the given valueint phi(int n){    // Initialize result as n    int result = n;     // Consider all prime factors    // of n and subtract their    // multiples from result    for (int p = 2; p * p <= n; ++p) {                 // Check if p is a prime factor.        if (n % p == 0) {                         // If yes, then update N            // and result            while (n % p == 0)                n /= p;            result -= result / p;        }    }     // If n has a prime factor    // greater than sqrt(n)    // (There can be at-most one    // such prime factor)    if (n > 1)        result -= result / n;    return result;} // Function to check if the number// is a perfect totient numberint isPerfectTotientNum(int n){    // store original value of n    int temp = n;    int sum = 0;         // loop to calculate sum    // of iterated totients    while(n > 1){        sum = sum + phi(n);        n = phi(n);    }    // condition for Perfect    // Totient Number    if(sum == temp)    return true;         return false;} // Driver Codeint main(){    int n = 9;    if(isPerfectTotientNum(n))        cout << "Yes";    else        cout << "No";    return 0;}

## Java

 // Java implementation to find the // number of digits in a Nth// fibonacci numberclass GFG{ // Function to find the Totient// number of the given valuestatic int phi(int n){         // Initialize result as n    int result = n;     // Consider all prime factors    // of n and subtract their    // multiples from result    for(int p = 2; p * p <= n; ++p)    {                // Check if p is a prime factor       if (n % p == 0)       {                       // If yes, then update N           // and result           while (n % p == 0)           {               n /= p;           }           result -= result / p;       }    }     // If n has a prime factor    // greater than sqrt(n)    // (There can be at-most one    // such prime factor)    if (n > 1)        result -= result / n;    return result;} // Function to check if the number// is a perfect totient numberstatic boolean isPerfectTotientNum(int n){         // Store original value of n    int temp = n;    int sum = 0;         // Loop to calculate sum    // of iterated totients    while(n > 1)    {        sum = sum + phi(n);        n = phi(n);    }         // Condition for Perfect    // Totient Number    if(sum == temp)       return true;         return false;} // Driver Codepublic static void main(String[] args){    int n = 9;         if(isPerfectTotientNum(n))    {        System.out.println("Yes");    }    else    {        System.out.println("No");    }}} // This code is contributed by Ritik Bansal

## Python3

 # Python3 implementation to find# the number of digits in# a Nth fibonacci number # Function to find the Totient# number of the given valuedef phi(n):         # Initialize result as n    result = n     # Consider all prime factors    # of n and subtract their    # multiples from result    for p in range(2, n):        if p * p > n:            break         # Check if p is a prime factor.        if (n % p == 0):             # If yes, then update N            # and result            while (n % p == 0):                n //= p                             result -= result // p     # If n has a prime factor    # greater than sqrt(n)    # (There can be at-most one    # such prime factor)    if (n > 1):        result -= result // n             return result # Function to check if the number# is a perfect totient numberdef isPerfectTotientNum(n):         # Store original value of n    temp = n    sum = 0     # Loop to calculate sum    # of iterated totients    while (n > 1):        sum = sum + phi(n)        n = phi(n)             # Condition for Perfect    # Totient Number    if (sum == temp):        return True     return False # Driver Codeif __name__ == '__main__':         n = 9         if (isPerfectTotientNum(n)):        print("Yes")    else:        print("No") # This code is contributed by mohit kumar 29

## C#

 // C# implementation to find the// number of digits in a Nth// fibonacci numberusing System;class GFG{ // Function to find the Totient// number of the given valuestatic int phi(int n){         // Initialize result as n    int result = n;     // Consider all prime factors    // of n and subtract their    // multiples from result    for(int p = 2; p * p <= n; ++p)    {               // Check if p is a prime factor       if (n % p == 0)       {                       // If yes, then update N           // and result           while (n % p == 0)           {               n /= p;           }           result -= result / p;       }    }     // If n has a prime factor    // greater than sqrt(n)    // (There can be at-most one    // such prime factor)    if (n > 1)        result -= result / n;    return result;} // Function to check if the number// is a perfect totient numberstatic bool isPerfectTotientNum(int n){         // Store original value of n    int temp = n;    int sum = 0;         // Loop to calculate sum    // of iterated totients    while(n > 1)    {        sum = sum + phi(n);        n = phi(n);    }         // Condition for Perfect    // Totient Number    if(sum == temp)    return true;         return false;} // Driver Codepublic static void Main(){    int n = 9;         if(isPerfectTotientNum(n))    {        Console.Write("Yes");    }    else    {        Console.Write("No");    }}} // This code is contributed by Code_Mech

## Javascript

 
Output:
Yes

Time Complexity: O(n1/2)

Auxiliary Space: O(1)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

My Personal Notes arrow_drop_up