Given a positive integer N, the task is to find the height of the Factor Tree of the given integer N.
Examples:
Input: N = 20
Output: 3
Explanation: The height of the Factor Tree of 20 shown in the image below is 3.
Input: N = 48
Output: 5
Approach: The given problem can be solved by using the steps discussed below:
- Initialize a variable, say height as 0 that stores the height of the Factor Tree of the given integer N.
- Iterate over all the values of i in the range [2, ?N] and perform the following steps:
- Find the smallest divisor of N and if it exists, then increment the value of height by 1.
- If a divisor i exists, then repeat the above step by updating the value of N to N / i, until N > 1.
- If no divisors of N exist break the loop.
- After completing the above steps, print the value of height as the answer.
Below is the implementation of the above approach:
C++
// C++ program for the above approach Â
#include <bits/stdc++.h> using namespace std; Â
// Function to find the height of the // Factor Tree of the integer N int factorTree( int N) {     // Stores the height of Factor Tree     int height = 0; Â
    // Loop to iterate over values of N     while (N > 1) {         // Stores if there exist         // a factor of N or not         bool flag = false ; Â
        // Loop to find the smallest         // factor of N         for ( int i = 2; i <= sqrt (N); i++) {             // If i is a factor of N             if (N % i == 0) {                 N = N / i;                 flag = true ;                 break ;             }         } Â
        // Increment the height         height++; Â
        // If there are no factors of N         // i.e, N is prime, break loop         if (!flag) {             break ;         }     } Â
    // Return Answer     return height; } Â
// Driver Code int main() { Â Â Â Â int N = 48; Â Â Â Â cout << factorTree(N); Â
    return 0; } |
Java
// Java program for the above approach public class Main {     // Function to find the height of the     // Factor Tree of the integer N     static int factorTree( int N)     {                 // Stores the height of Factor Tree         int height = 0 ;                // Loop to iterate over values of N         while (N > 1 )         {                        // Stores if there exist             // a factor of N or not             boolean flag = false ;                    // Loop to find the smallest             // factor of N             for ( int i = 2 ; i <= Math.sqrt(N); i++)             {                                // If i is a factor of N                 if (N % i == 0 ) {                     N = N / i;                     flag = true ;                     break ;                 }             }                    // Increment the height             height++;                    // If there are no factors of N             // i.e, N is prime, break loop             if (!flag) {                 break ;             }         }                // Return Answer         return height;     }          public static void main(String[] args) {         int N = 48 ;         System.out.println(factorTree(N));     } } Â
// This code is contributed by mukesh07. |
Python3
# Python 3 program for the above approach from math import sqrt Â
# Function to find the height of the # Factor Tree of the integer N def factorTree(N):        # Stores the height of Factor Tree     height = 0 Â
    # Loop to iterate over values of N     while (N > 1 ):                # Stores if there exist         # a factor of N or not         flag = False Â
        # Loop to find the smallest         # factor of N         for i in range ( 2 , int (sqrt(N)) + 1 , 1 ):             # If i is a factor of N             if (N % i = = 0 ):                 N = N / / i                 flag = True                 break Â
        # Increment the height         height + = 1 Â
        # If there are no factors of N         # i.e, N is prime, break loop         if (flag = = False ):             break Â
    # Return Answer     return height Â
# Driver Code if __name__ = = '__main__' : Â Â Â Â N = 48 Â Â Â Â print (factorTree(N)) Â Â Â Â Â Â Â Â Â # This code is contributed by SURENDRA_GANGWAR. |
C#
// C# program for the above approach using System; class GFG {          // Function to find the height of the     // Factor Tree of the integer N     static int factorTree( int N)     {                // Stores the height of Factor Tree         int height = 0;               // Loop to iterate over values of N         while (N > 1) {             // Stores if there exist             // a factor of N or not             bool flag = false ;                   // Loop to find the smallest             // factor of N             for ( int i = 2; i <= Math.Sqrt(N); i++) {                 // If i is a factor of N                 if (N % i == 0) {                     N = N / i;                     flag = true ;                     break ;                 }             }                   // Increment the height             height++;                   // If there are no factors of N             // i.e, N is prime, break loop             if (!flag) {                 break ;             }         }               // Return Answer         return height;     } Â
  static void Main() {     int N = 48;     Console.Write(factorTree(N));   } } Â
// This code is contributed by decode2207. |
Javascript
<script>         // JavaScript Program to implement         // the above approach Â
        // Function to find the height of the         // Factor Tree of the integer N         function factorTree(N)         {                      // Stores the height of Factor Tree             let height = 0; Â
            // Loop to iterate over values of N             while (N > 1)             {                              // Stores if there exist                 // a factor of N or not                 let flag = false ; Â
                // Loop to find the smallest                 // factor of N                 for (let i = 2; i <= Math.sqrt(N); i++)                 {                                      // If i is a factor of N                     if (N % i == 0) {                         N = Math.floor(N / i);                         flag = true ;                         break ;                     }                 } Â
                // Increment the height                 height++; Â
                // If there are no factors of N                 // i.e, N is prime, break loop                 if (!flag) {                     break ;                 }             } Â
            // Return Answer             return height;         } Â
        // Driver Code         let N = 48;         document.write(factorTree(N)); Â
// This code is contributed by Potta Lokesh Â
    </script> |
5
Â
Time Complexity: O(?N*log N)
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!