Comprueba si un número se puede expresar como a^b | conjunto 2

Has dado un número n. Comprueba si un número se puede representar en forma de pow(a, b) (a^b).

Ejemplos: 

Input : 4
Output : Yes
22 = 4

Input : 12
Output : No

Hemos discutido dos enfoques en Comprobar si un número se puede expresar como x^y (x elevado a la potencia y) . En esta publicación, se discute una solución más eficiente. La idea se basa en logarítmica.

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)

Tenga en cuenta esta lógica para desarrollar la solución más eficiente que se menciona a continuación:

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

<?php
// PHP program to check if a number
// can be expressed as a^b.
 
function isPower($a)
{
    if ($a == 1)
        return true;
 
    for ($i = 2; $i * $i <= $a; $i++)
    {
        $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

<script>
//Javascript program to check if a number
//can be expressed as a^b.
     
    function isPower(a)
    {
        if (a == 1)
        return true;
  
    for (let i = 2; i * i <= a; i++) {
        let val = Math.log(a) / Math.log(i);
        if ((val - Math.floor(val)) < 0.00000001)
            return true;
     
    }
  
    return false;
     
    }
     
    // Driver code
    let n = 16;
    document.write(isPower(n) ? "Yes" : "No");
     
     
    // This code is contributed by avanitrachhadiya2155
</script>
Producción

Yes

Complejidad del tiempo: O(sqrt(n))

Publicación traducida automáticamente

Artículo escrito por Bhashkar_P y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *