我有一个用 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/