python - 如何有效地将整数提升为小数幂?

标签 python optimization pow sqrt

我有一个用 python 实现的二进制搜索。 现在我想检查元素 math.floor(n ^ (1/p)) 是否在我的二进制搜索中。 但是 p 是一个非常非常大的数字。我使用 fractions 模块 编写了:

binary_search.search(list,int (n**fractions.Fraction('1'+'/'+str(p))))

但是我有一个错误OverflowError: integer division result too large for a float 我怎样才能取 n 次方,这是一个分数并快速完成?

最佳答案

除非您的 n 值也非常大,否则 floor(n^(1/p)) 将趋向于 1,表示“非常非常大” p 的值。由于您只对整数部分感兴趣,因此您可以使用一个简单的循环来测试 1^P、2^p、3^p 等是否大于 n。

如果不需要,不要浪费时间寻找精确值。

关于python - 如何有效地将整数提升为小数幂?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23506821/

相关文章:

python - 如何使用 %debug 来调查 Python unittest 失败?

在左连接中使用 group by 的 MySQL 子查询 - 优化

c++ - pow 函数如何工作?

python - 像素网格中非相邻单元的随机采样

python - 如何在 Python 中将 str.format() 与字典一起使用?

ruby-on-rails - 负载测试期间 Unicorn CPU 使用率激增,优化方法

python - 将非常大的 n 基数转换为字节

java - 在for循环中创建JTextFields以逐步计算数字的pow

python - 打开文件并将行放入单独的字符串中

python - 为 scipy.optimize.fmin(和其他)设置收敛标准