python如何计算这个模数?

python如何以数学方式计算这个模数?

>>>-1%10  
9

关于模运算的维基百科文章为a % q提供了以下约束条件:

a = nq + r

代入a = -1q = 10r = 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

看来,当aq具有不同的符号,我们先从n = -1和递减n 1,直到我们发现第n最接近于零,使得n*q < a 。 我们可以通过用aq这样的方法来测试这个: |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
-1010最大倍数,小于-1

9 % 5类似,将是最大数量少于分红应考虑。

5/5 = 1 ,因此4


我不知道你是在问一下python使用的算法,或者为什么这样回答。

如果是后者,假设对于模n你减去或加n直到你得到一个介于0n-1之间的数字

链接地址: http://www.djcxy.com/p/58295.html

上一篇: How python calculate this modulo?

下一篇: trying to better understand modulo calculation