Python gmpy2 f_divmod 函数困惑
我刚开始学习Python,最近在玩gmpy2这个库,但对其中一个函数有点困惑,gmpy的文档在这方面没有帮助:
我想进行带有取模(modulus)和向下取整(floor)的除法,所以我找到了f_divmod()
这个函数:
f_divmod(...)
f_divmod(x, y)
会返回x除以y的商和余数。商是向下取整的(也就是取小于等于的整数),而余数会和y有相同的符号。x和y必须是整数。
但是如果这个函数的功能和我想的一样(这可能是我理解错了),它应该是做x / y % m
,但我看不到提供m
的方法。这个函数是不是不对,还是我需要在别的地方定义一个取模?
我想到的替代方法是:
c = gmpy2.f_div(a, b) % m
提前谢谢你们!
1 个回答
3
注意:我在维护gmpy2这个库。
gmpy2.f_divmod()
(还有gmpy2.c_divmod()
、gmpy2.t_divmod()
和gmpy2.divmod()
)的设计灵感来自于内置的divmod()
函数。这些函数都能返回商和余数,但每个函数计算商和余数的规则稍微有点不同。它们的名字是为了让人明白这些函数返回的是一个元组(a // b, a % b)
。它们并不是先做除法再做取余。
如果你想用向下取整的方式计算商,然后再用这个结果去做取余运算,那么你选择的替代方法是正确的。
稍微偏题的提示:你应该养成使用//
来进行整数除法的习惯。在Python 3中,/
会变成浮点数除法。而//
在Python 2和3中都是整数除法。