所以,如果我想使用pow函数计算6 ^ 8 mod 5的值,我应该把它放在一行?
假设您不需要先导入它
我知道pow就像pow(x,y)= pow(6,8)= 6 ^ 8一样使用 和
我的猜测是
mod.pow(6,8)
谢谢!
答案 0 :(得分:20)
这很简单:pow
为模数采用可选的第三个参数。
来自docs:
pow(x, y[, z])
将x返回到y;如果z存在,则将x返回到幂y,模z(比
pow(x, y) % z)
更有效地计算 两个参数形式pow(x,y)相当于使用幂运算符:x**y
。
所以你想要:
pow(6, 8, 5)
pow(x, y, z)
不仅速度更快,而且比(x ** y) % z
效率更高,它可以轻松处理y
的大值,而无需使用任意精度算术,假设z
是一个简单的机器整数。
答案 1 :(得分:3)
查看pow
的文档:
pow(6, 8, 5)
做你想要的。
不使用a ** b % n
!虽然这会得到正确的结果,但如果你计算更大的数字,它将会减少几个数量级。 pow
将在每个步骤中执行模运算,而**
将首先在整数中进行取幂(这可能会产生巨大的数字),并仅在端。
现在,如果您对大于32位的数字感兴趣,可能需要查看gmpy2以获得更快的速度。
答案 2 :(得分:0)
您可以使用'%'获得模数值的字符。例如print(pow(6,8) % 5)
或print(6**8 % 5)
。