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>
|
Output:
5
Time Complexity: O(?N*log N)
Auxiliary Space: O(1)