检查一个数字能否表示为 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
广告