Check if a number can be expressed as power | Set 2 (Using Log) - GeeksforGeeks

14 Jun, 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++
Java
Python3
C#
PHP
Javascript
// CPP program to find if a number// can be expressed as x raised to// power y.#include <bits/stdc++.h>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 program to find if a number// can be expressed as x raised to// power y.class 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 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# program to find if a number// can be expressed as x raised to// power y.using 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
<?php// PHP program to find if a number// can be expressed as x raised to// power y. function isPower($n){    // Find Log n in different    // bases and check if the    // value is an integer    for ($x = 2; $x <= sqrt($n); $x++)    {        $f = log($n) / log($x);        if (($f - (int)$f) == 0.0)            return true;        }    return false;} // Driver codefor ($i = 2; $i < 100; $i++)    if (isPower((int)$i))        echo $i." "; // This code is contributed by Sam007?>
<script> // javascript program to find if a number// can be expressed as x raised to// power y.function isPower(n) {        // Find Log n in different        // bases and check if the        // value is an integer        for (x = 2; x <= parseInt( Math.sqrt(n)); x++)        {            var f =  Math.log(n) /  Math.log(x);             if ((f - parseInt( f)) == 0.0)                return true;        }        return false;    }     // Driver code             for (i = 2; i < 100; i++)            if (isPower(i))                document.write(i + " "); // This code contributed by Rajput-Ji </script>
4  8  9  16  25  27  32  36  49  64  81
 
Sam007
Mithun Kumar
Rajput-Ji
bunnyram19
maths-log
number-theory
Mathematical
number-theory
Mathematical
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Program to find GCD or HCF of two numbers
Modulo Operator (%) in C/C++ with Examples
Merge two sorted arrays
Prime Numbers
Program to find sum of elements in a given array
Program for factorial of a number
Operators in C / C++
Euclidean algorithms (Basic and Extended)
Sieve of Eratosthenes
Program for Decimal to Binary Conversion