python如何计算这个模数?
python如何以数学方式计算这个模数?
>>>-1%10
9
关于模运算的维基百科文章为a % q
提供了以下约束条件:
a = nq + r
代入a = -1
, q = 10
和r = 9
,我们看到n必须等于-1。
在n中插入-1:
-1 % 10 # Python evaluates this as 9
-1 = n * 10 + r
-1 = -1 * 10 + r
9 = r
用另一个例子进行测试(对于n再次插入-1):
-7 % 17 # Python evaluates this as 10
-7 = n * 17 + r
-7 = -17 + r
10 = r
分子为正数,分母为负的第三个例子:
7 % -17 # Python evaluates this as -10
7 = n * (-17) + r
7 = -1 * (-17) + r
7 = 17 + r
-10 = r
看来,当a
和q
具有不同的符号,我们先从n = -1
和递减n
1,直到我们发现第n最接近于零,使得n*q < a
。 我们可以通过用a
和q
这样的方法来测试这个: |a|
> |q|
:
-100 % 11 # Python evaluates as 10
-100 = n * 11 + r
... -1 # -11 > -100
... -2 # -22 > -100
... -3 ...
... -4 ...
... -5 ...
... -6 ...
... -7 ...
... -8 ...
... -9 # -99 > -100
-100 = -10 * 11 + r # -110 < -100
-100 = -110 + r
10 = r
所以虽然这可能不是Python实际用来计算模的算法,但我们至少有一个有用的心智模型来推理给定结果是如何得出的。
它被这样调整: -
-10 / 10 = -1
,
因此剩下9
。
-10
是10
最大倍数,小于-1
。
与9 % 5
类似,将是最大数量少于分红应考虑。
5/5 = 1
,因此4
。
我不知道你是在问一下python使用的算法,或者为什么这样回答。
如果是后者,假设对于模n
你减去或加n
直到你得到一个介于0
和n-1
之间的数字