Python 模运算符给出不好的结果

Python modulo operator giving bad results

>>> m = 3403
>>> 31 % m
31
>>> 031 % m
25

我在终端中使用 python 测试 RSA。我不知道为什么最后一行给出了它的结果。有什么想法吗?

这不是 % 运算符的问题。您不小心使用了 Python 整数文字功能。

您创建了一个 八进制 号码,方法是在号码前加上 0:

>>> 31
31
>>> 031
25

那是 3 * 8 + 1,不是 3 * 10 + 1

在 Python 3 中,您不能再以这种方式创建八进制数字,您只能使用 0o 前缀。