Python gmpy2 f_divmod函数混乱

时间:2013-02-17 22:01:29

标签: python gmp

我对python很陌生,我刚开始玩gmpy2,但我对其中一个功能感到困惑,而gmpy的文档在这方面并没有帮助:

我想用模数(以及地板)进行除法,所以我找到了f_divmod()函数:

  

f_divmod(...)f_divmod(x,y)返回x的商和余数   除以y。商是舍入到-Inf(地板四舍五入)   其余部分与y具有相同的符号。 x和y必须是   整数。

但是,如果这样做我认为它应该做(这可能是我的错误),它应该做:x / y % m,我认为没有办法提供m。这是错误的功能,还是我需要以某种方式在别处定义模数?

我看到了另一种选择:

c = gmpy2.f_div(a, b) % m

提前致谢!

1 个答案:

答案 0 :(得分:1)

注意:我维护gmpy2。

gmpy2.f_divmod()(以及gmpy2.c_divmod()gmpy2.t_divmod()gmpy2.divmod())在内置divmod()之后进行了模式化。所有函数都返回商和余数,但每个函数使用稍微不同的规则来计算商和余数。这些名称意味着函数返回元组(a // b, a % b)。他们不做分工,然后是mod。

如果您想使用楼层划分来计算商,然后将该结果减去另一个数的模数,那么您的选择是正确的。

稍微偏离主题的提示:你应养成使用//进行整数除法的习惯。在Python 3中,/成为浮点除法。 //在Python 2和3中都是整数除法。