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