Related Articles
Check if a number can be expressed as power | Set 2 (Using Log)
• Difficulty Level : Medium
• Last Updated : 16 Apr, 2021

Check if a number can be expressed as x^y (x raised to power y)
Given a positive integer n, find if it can be expressed as x^y where y > 1 and x > 0. x and y both are integers.
Examples :

Input:  n = 8
Output: true
8 can be expressed as 2^3

Input:  n = 49
Output: true
49 can be expressed as 7^2

Input:  n = 48
Output: false
48 can't be expressed as x^y

We have discussed two different approaches in below post.
Check if a number can be expressed as x^y (x raised to power y).
The idea is find Log n in different bases from 2 to square root of n. If Log n for a base becomes integer then result is true, else result is false.

C++

 // CPP program to find if a number// can be expressed as x raised to// power y.#include using namespace std; bool isPower(unsigned int n){    // Find Log n in different bases    // and check if the value is an    // integer    for (int x=2; x<=sqrt(n); x++) {        float f = log(n) / log(x);        if ((f - (int)f) == 0.0)            return true;           }    return false;} // Driver codeint main(){    for (int i = 2; i < 100; i++)        if (isPower(i))            cout << i << "  ";    return 0;}

Java

 // Java program to remove all the// characters other then alphabetsclass GFG {         static boolean isPower(int n)    {        // Find Log n in different        // bases and check if the        // value is an integer        for (int x = 2; x <=               (int)Math.sqrt(n); x++)        {            float f = (float)Math.log(n) /                      (float) Math.log(x);                                   if ((f - (int)f) == 0.0)                return true;            }        return false;    }         // Driver code    public static void main(String args[])    {        for (int i = 2; i < 100; i++)            if (isPower(i))                System.out.print( i + " ");    }} // This code is contributed by Sam007

Python3

 # Python3 program to find if a number# can be expressed as x raised to# power y.import math def isPower(n):     # Find Log n in different    # bases and check if the    # value is an integer    for x in range(2,int(math.sqrt(n)) + 1):             f = math.log(n) / math.log(x);        if ((f - int(f)) == 0.0):            return True;             return False; # Driver codefor i in range(2, 100):    if (isPower(i)):        print(i, end = " "); # This code is contributed by mits

C#

 // C# program to remove all the// characters other then alphabetsusing System; class GFG{    static bool isPower(int n)    {        // Find Log n in different        // bases and check if the        // value is an integer        for (int x = 2;                 x <= (int)Math.Sqrt(n); x++)        {            float f = (float)Math.Log(n) /                      (float) Math.Log(x);            if ((f - (int)f) == 0.0)                return true;            }        return false;    }    // Driver Code    public static void Main()    {        for (int i = 2; i < 100; i++)            if (isPower(i))                Console.Write( i + " ");    }} // This code is contributed by Sam007



Javascript


Output:
4  8  9  16  25  27  32  36  49  64  81

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up