Check if a number can be expressed as a^b | Set 2 (original) (raw)

Last Updated : 11 Jul, 2025

You have given a number n. Check if a number can be represented in the form of pow(a, b) (a^b).

Examples:

Input : 4 Output : Yes 22 = 4

Input : 12 Output : No

We have discussed two approaches in Check if a number can be expressed as x^y (x raised to power y). In this post, a more efficient solution is discussed. The idea is based on logarithmic.

Consider a no. N which needs to be expressed in the form (a^b). N = ab Taking log both sides: log (N) = b.log (a) b = log(N)/log(a)

Keep this logic in mind to develop the most efficient solution mentioned below:

C++ `

// CPP program to check if a number // can be expressed as a^b. #include <bits/stdc++.h> using namespace std;

bool isPower(int a) { if (a == 1) return true;

for (int i = 2; i * i <= a; i++) {
    double val = log(a) / log(i);
    if ((val - (int)val) < 0.00000001)
        return true;
}

return false;

}

// Driver code int main() { int n = 16; cout << (isPower(n) ? "Yes" : "No"); return 0; }

Java

//Java program to check if a number //can be expressed as a^b.

public class GFG {

static boolean isPower(int a)
{
if (a == 1)
    return true;

for (int i = 2; i * i <= a; i++) {
    double val = Math.log(a) / Math.log(i);
    if ((val - (int)val) < 0.00000001)
        return true;
}

return false;
}

// Driver code
public static void main(String[] args) {
    
    int n = 16;
    System.out.println(isPower(n) ? "Yes" : "No");

}

}

Python 3

Python 3 Program to check if a number

can be expressed as a^b

from math import *

def isPower(a) : if a== 1 : return True

for i in range(2, int(sqrt(a)) + 1) :
    val = log(a) / log(i)

    if (round((val - int(val)),8) < 0.00000001):
        return True

return False

Driver Code

if name == "main" :

n = 16

if isPower(n) :
    print("Yes")
else :
    print("No")

This code is contributed by ANKITRAI1

C#

// C# program to check if a number // can be expressed as a^b. using System;

class GFG {

public static bool isPower(int a) { if (a == 1) { return true; }

for (int i = 2; i * i <= a; i++)
{
    double val = Math.Log(a) / 
                 Math.Log(i);
    if ((val - (int)val) < 0.00000001)
    {
        return true;
    }
}

return false; }

// Driver code public static void Main(string[] args) { int n = 16; Console.WriteLine(isPower(n) ? "Yes" : "No"); } }

// This code is contributed // by Shrikant13

PHP

i∗i * ii <= a;a; a;i++) { val=log(val = log(val=log(a) / log($i); if (($val - $val) < 0.00000001) return true; } return false; } // Driver code $n = 16; echo (isPower($n) ? "Yes" : "No"); // This code is contributed // by Akanksha Rai(Abby_akku) ` JavaScript ` ` **Time Complexity :** O(sqrt(n)) **Auxiliary Space:** O(1)