检查一个数字能否表示为 a^b (Python)


假设我们有一个数字 n。我们需要检查是否可以将其表示为 a^b 的形式。

例如,如果输入是 125,则输出为 True,因为 125 = 5^3,所以 a = 5,b = 3。

为了解决这个问题,我们将遵循以下步骤:

  • 如果 num 等于 1,则
    • 返回 true
  • 从 i = 2 开始,当 i * i <= num 时,递增 i,执行以下操作:
    • val := log(num) / log(i)
    • 如果 val 减去 val 的整数部分近似为 0,则
      • 返回 true
  • 返回 true

让我们来看下面的实现,以便更好地理解:

示例

在线演示

#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

更新于:2021年1月16日

316 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告