Fifth root of a number

Given a number, print floor of 5’th root of the number.

Examples:

Input  : n = 32
Output : 2
2 raise to power 5 is 32

Input  : n = 250
Output : 3
Fifth square root of 250 is between 3 and 4
So floor value is 3.

Method 1 (Simple)
A simple solution is initialize result as 0, keep incrementing result while result5 is smaller than or equal to n. Finally return result – 1.



C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// A C++ program to find floor of 5th root
#include<bits/stdc++.h>
using namespace std;
  
// Returns floor of 5th root of n
int floorRoot5(int n)
{
    // Base cases
    if (n == 0 || n == 1)
        return n;
  
    // Initialize result
    int res = 0;
  
    // Keep incrementing res while res^5 is
    // smaller than or equal to n
    while (res*res*res*res*res <= n)
        res++;
  
    // Return floor of 5'th root
    return res-1;
}
  
// Driver program
int main()
{
    int n = 250;
    cout << "Floor of 5'th root is "
         << floorRoot5(n);
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to find floor of 5th root
  
class GFG {
      
// Returns floor of 5th root of n
static int floorRoot5(int n)
{
      
    // Base cases
    if (n == 0 || n == 1)
        return n;
  
    // Initialize result
    int res = 0;
  
    // Keep incrementing res while res^5 
    // is smaller than or equal to n
    while (res * res * res * res * res <= n)
        res++;
  
    // Return floor of 5'th root
    return res-1;
}
  
    // Driver Code
    public static void main(String []args)
    {
        int n = 250;
        System.out.println("Floor of 5'th root is "
                            + floorRoot5(n));
    }
}
  
// This code is contributed by Anshul Aggarwal.

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# A Python3 program to find the floor 
# of the 5th root 
  
# Returns floor of 5th root of n 
def floorRoot5(n): 
  
    # Base cases 
    if n == 0 and n == 1
        return
  
    # Initialize result 
    res = 0
  
    # Keep incrementing res while res^5 
    # is smaller than or equal to n 
    while res * res * res * res * res <= n: 
        res += 1
  
    # Return floor of 5'th root 
    return res-1
  
# Driver Code
if __name__ == "__main__":
  
    n = 250
    print("Floor of 5'th root is"
                    floorRoot5(n)) 
  
# This code is contributed by Rituraj Jain

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to find floor of 5th root
using System;
  
class GFG {
      
// Returns floor of 5th root of n
static int floorRoot5(int n)
{
      
    // Base cases
    if (n == 0 || n == 1)
        return n;
  
    // Initialize result
    int res = 0;
  
    // Keep incrementing res while res^5 
    // is smaller than or equal to n
    while (res * res * res * res * res <= n)
        res++;
  
    // Return floor of 5'th root
    return res-1;
}
  
    // Driver Code
    public static void Main()
    {
        int n = 250;
        Console.Write("Floor of 5'th root is " 
                       + floorRoot5(n));
    }
}
  
// This code is contributed by Sumit Sudhakar.

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP program to find 
// floor of 5th root
  
// Returns floor of 
// 5th root of n
function floorRoot5($n)
{
      
    // Base cases
    if ($n == 0 || $n == 1)
        return $n;
  
    // Initialize result
    $res = 0;
  
    // Keep incrementing res while
    // res^5 is smaller than or 
    // equal to n
    while ($res * $res * $res
           $res * $res <= $n)
        $res++;
  
    // Return floor 
    // of 5'th root
    return $res - 1;
}
  
    // Driver Code
    $n = 250;
    echo "Floor of 5'th root is "
                , floorRoot5($n);
  
// This code is contributed by nitin mittal.
?>

chevron_right


Output:

Floor of 5'th root is 3

Time complexity of above solution is O(n1/5). We can do better. See below solution.

 
Method 2 (Binary Search)
The idea is to do Binary Search. We start from n/2 and if its 5’th power is more than n, we recur for interval from n/2+1 to n. Else if power is less, we recur for interval 0 to n/2-1

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// A C++ program to find floor of 5'th root
#include<bits/stdc++.h>
using namespace std;
  
// Returns floor of 5'th root of n
int floorRoot5(int n)
{
    // Base cases
    if (n == 0 || n == 1)
       return n;
  
    // Do Binary Search for floor of 5th square root
    int low = 1, high = n, ans = 0;
    while (low <= high)
    {
        // Find the middle point and its power 5
        int mid = (low + high) / 2;
        long int mid5 = mid*mid*mid*mid*mid;
  
        // If mid is the required root
        if (mid5 == n)
            return mid;
  
        // Since we need floor, we update answer when
        // mid5 is smaller than n, and move closer to
        // 5'th root
        if (mid5 < n)
        {
            low = mid + 1;
            ans = mid;
        }
        else // If mid^5 is greater than n
            high = mid - 1;
    }
    return ans;
}
  
// Driver program
int main()
{
    int n = 250;
    cout << "Floor of 5'th root is "
         << floorRoot5(n);
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// A Java program to find 
// floor of 5'th root
  
class GFG {
      
    // Returns floor of 5'th 
    // root of n
    static int floorRoot5(int n)
    {
          
        // Base cases
        if (n == 0 || n == 1)
        return n;
      
        // Do Binary Search for 
        // floor of 5th square root
        int low = 1, high = n, ans = 0;
        while (low <= high)
        {
              
            // Find the middle point
            // and its power 5
            int mid = (low + high) / 2;
            long mid5 = mid * mid * mid * 
                            mid * mid;
      
            // If mid is the required root
            if (mid5 == n)
                return mid;
      
            // Since we need floor, 
            // we update answer when
            // mid5 is smaller than n, 
            // and move closer to
            // 5'th root
            if (mid5 < n)
            {
                low = mid + 1;
                ans = mid;
            }
              
            // If mid^5 is greater
            // than n
            else
                high = mid - 1;
        }
        return ans;
    }
      
    // Driver Code
    public static void main(String []args)
    {
        int n = 250;
        System.out.println("Floor of 5'th root is "
                                     floorRoot5(n));
    }
}
  
// This code is contributed by Anshul Aggarwal.

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# A Python3 program to find the floor 
# of 5'th root 
  
# Returns floor of 5'th root of n 
def floorRoot5(n): 
  
    # Base cases 
    if n == 0 or n == 1
        return
  
    # Do Binary Search for floor of 
    # 5th square root 
    low, high, ans = 1, n, 0
    while low <= high: 
      
        # Find the middle point and its power 5 
        mid = (low + high) // 2
        mid5 = mid * mid * mid * mid * mid 
  
        # If mid is the required root 
        if mid5 == n: 
            return mid 
  
        # Since we need floor, we update answer 
        # when mid5 is smaller than n, and move 
        # closer to 5'th root 
        if mid5 < n: 
          
            low = mid + 1
            ans = mid 
          
        else: # If mid^5 is greater than n 
            high = mid - 1
      
    return ans 
  
# Driver Code
if __name__ == "__main__":
  
    n = 250
    print("Floor of 5'th root is", floorRoot5(n)) 
  
# This code is contributed by Rituraj Jain

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// A C# program to find 
// floor of 5'th root
using System;
  
class GFG {
      
    // Returns floor of 5'th 
    // root of n
    static int floorRoot5(int n)
    {
          
        // Base cases
        if (n == 0 || n == 1)
        return n;
      
        // Do Binary Search for 
        // floor of 5th square root
        int low = 1, high = n, ans = 0;
        while (low <= high)
        {
              
            // Find the middle point
            // and its power 5
            int mid = (low + high) / 2;
            long mid5 = mid * mid * mid * 
                            mid * mid;
      
            // If mid is the required root
            if (mid5 == n)
                return mid;
      
            // Since we need floor, 
            // we update answer when
            // mid5 is smaller than n, 
            // and move closer to
            // 5'th root
            if (mid5 < n)
            {
                low = mid + 1;
                ans = mid;
            }
              
            // If mid^5 is greater
            // than n
            else
                high = mid - 1;
        }
        return ans;
    }
      
    // Driver Code
    public static void Main(String []args)
    {
        int n = 250;
        Console.WriteLine("Floor of 5'th root is "
                                     floorRoot5(n));
    }
}
  
// This code is contributed by Anshul Aggarwal.

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// A PHP program to find floor of 5'th root
  
// Returns floor of 5'th root of n
function floorRoot5($n)
{
    // Base cases
    if ($n == 0 || $n == 1)
    return $n;
  
    // Do Binary Search for floor of 5th square root
    $low = 1;
    $high = $n;
    $ans = 0;
    while ($low <= $high)
    {
        // Find the middle point and its power 5
        $mid = (int)(($low + $high) / 2);
        $mid5 = $mid*$mid*$mid*$mid*$mid;
  
        // If mid is the required root
        if ($mid5 == $n)
            return $mid;
  
        // Since we need floor, we update answer when
        // mid5 is smaller than n, and move closer to
        // 5'th root
        if ($mid5 < $n)
        {
            $low = $mid + 1;
            $ans = $mid;
        }
        else // If mid^5 is greater than n
            $high = $mid - 1;
    }
    return $ans;
}
  
    // Driver code
    $n = 250;
    echo "Floor of 5'th root is ".floorRoot5($n);
      
// This code is contributed by mits
?>

chevron_right



Output:

Floor of 5'th root is 3

Time complexity of above solution is O(Log n)

We can also use Newton Raphson Method to find exact root. See this for implementation.

Source : http://qa.geeksforgeeks.org/7487/program-calculate-fifth-without-using-mathematical-operators

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above



My Personal Notes arrow_drop_up



Article Tags :
Practice Tags :


Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.