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之间的数字
