检查一个数字是否可以表示为幂|集2(使用Log)

检查一个数字是否可以表示为x^y(x提升为y的幂) 给定一个正整数n,找出它是否可以表示为x^y,其中y>1,x>0。x和y都是整数。 例如:

null
Input:  n = 8Output: true8 can be expressed as 2^3Input:  n = 49Output: true49 can be expressed as 7^2Input:  n = 48Output: false48 can't be expressed as x^y

我们在下面的帖子中讨论了两种不同的方法。 检查一个数字是否可以表示为x^y(x提升为y的幂) . 其思想是在从2到n的平方根的不同基数中找到logn。如果基数的logn变为整数,则结果为真,否则结果为假。

C++

// 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 code
int main()
{
for ( int i = 2; i < 100; i++)
if (isPower(i))
cout << i << "  " ;
return 0;
}


JAVA

// 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

# 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 code
for i in range ( 2 , 100 ):
if (isPower(i)):
print (i, end = " " );
# This code is contributed by mits


C#

// 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
// 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 code
for ( $i = 2; $i < 100; $i ++)
if (isPower((int) $i ))
echo $i . " " ;
// This code is contributed by Sam007
?>


Javascript

<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

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享