r = a%n
,那么a = n * q + r
对于某些q
成立。这意味着您有许多选择r
的值,具体取决于所选择的q
的值。r
,通常情况下r
的值在-n < r < n
之间。这意味着,除非r
为零,否则您有两个选择r
的值 - 一个正数,一个负数。不同的编程语言对于是选择正数还是负数做出不同的决策。您会在该页面上找到总结不同语言所做决策的表:
n
相同符号的r
(就像上面所看到的)。a
相同符号的r
(在2011年标准之前,它是实现定义的)。r = a % n
if r < 0:
r += n
我想你应该看一下以下内容。除了使用略有不同的算法外,运算符优先级也很重要。试试用括号:
In [170]: 2%5
Out[170]: 2
In [171]: -2%5
Out[171]: 3
In [172]: (-2)%5
Out[172]: 3
In [173]: -(2%5)
Out[173]: -2