检查一个数字是否可以在 Python 中表示为 a^b

假设我们有一个数字 n。我们必须检查我们是否可以像 a^b 一样表达它。

所以,如果输入像 125,那么输出将是 True,因为 125 = 5^3,所以 a = 5 和 b = 3

为了解决这个问题,我们将按照以下步骤操作 -

  • 如果 num 与 1 相同,则:

    • 返回真

  • 对于初始化 i := 2,当 i * i <= num 时,更新(将 i 增加 1),执行:

    • 返回真

    • 价值 := log(num)/log(i)

    • 如果 val - val 的整数部分接近 0,则:

  • 返回假

让我们看看以下实现以获得更好的理解 -

示例

#include<iostream>
#include<cmath>
using namespace std;

bool solve(int num) {
   if (num == 1)
      return true;
 
   for (int i = 2; i * i <= num; i++) {
      double val = log(num) / log(i);
      if ((val - (int)val) < 0.00000001)
         return true;
   }
   
   return false;
}
 
int main() {
   int n = 125;
   cout << solve(n);
}

输入

125
输出结果
1

猜你喜欢