我正在尝试看看是否有一种好方法可以找到给定 int
s b
和 n
是否存在int a
这样 a^n=b
。换句话说,比我在下面写的糟糕的解决方案更有效
private static bool HasBase(int b, int n)
{
for(int a = 1; a <= int.MaxValue; ++a)
{
int pow = Power(a, n);
if(pow == b)
return true;
else if(pow > b)
return false;
}
return false;
}
private static int Power(int a, int n)
{
return Enumerable.Range(a, n).Aggregate(1, (prev, cur) => prev * cur);
}
最佳答案
它有 Math.log(double, double) 函数,它在第二个数字的基数中找到第一个数字的对数。如果那是完整的,那就是一种力量。例如,如果我想知道 x 是否是 2 的幂,我可以这样写:
bool isAPower = (Decimal)(Math.Log(x,2))%1==0;
换句话说,取x的对数底数2,如果我将它除以1求余数。如果 mod 为 0 则为真,如果不为 0 则为假。
关于c# - C# 的标准库是否有简单的方法来检查一个数字是否是另一个数字的幂?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43666362/