我对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
提前致谢!
答案 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中都是整数除法。