0

我想知道如何找到浮点数的反对数。我的第一种方法是在 Python 和 C 中使用 exp()、pow() 等内置函数,但它们给出了超出范围的错误。

然后我尝试将它分成两部分,一个整数和另一个浮点数,然后分别计算它们的 10 次幂,然后将它们相乘以获得结果。所以当我尝试在 Python 中计算 (a*b) 它说long int too large to convert to float

我最初的任务是计算 antilog(x)%m & 我将它转换为 (a*b)%m 其中 a 是非常非常大的整数 & b 是浮点数。

那么有人可以帮我解决这个问题吗?是否有任何适用于浮动的模块化属性?或者是否有任何“快速”和“高效”的方法来计算 antilog(x)?

4

1 回答 1

1

如果您需要计算(10**x)%m,请不要尝试先计算10**xpow函数接受三个参数:

pow(x, y[, z])

返回 x 的 y 次幂;如果 z 存在,则返回 x 的 y 次幂,以 z 为模(计算比 pow(x, y) % z 更有效)。两个参数的形式 pow(x, y) 等价于使用幂运算符:x**y。

这似乎非常适合您的问题。你要pow(10, x, m)

OOPS:除非你有一个非整数指数。

你不能使用这些等式:

  1. a**(b+c) == a**b * a**c
  2. (a*b)%m == (a%m * b%m) % m

定义这样的函数:

def bigpow(a, b, m):
    bint = int(b)
    bfrac = b - int(b)
    return (pow(a, bint, m) * ((a**bfrac)%m)) % m
于 2014-11-16T16:45:17.723 回答