我找到了模块化的定义
mod(a,n) = an *层(a/ n)做一个整数除法,然后再乘以它,就意味着找到小于a的最大数,它可以被n除而没有余数。从a中减去这个值将得到除法的其余部分,并由此得到模块。
它似乎帮助我直观地理解,它适用于a和n都为正的情况,也适用于a为负而b为正的情况。例如:
-10国防部3
-12是小于-10可被3整除的最大数,所以其余的是-10-(-12)=2,这是正确的。
但是当我试着做10个mod-3时,我的答案是不正确的。因为虽然9是小于10的最大数,可被-3整除,但它会给出错误的答案,因为它将计算为10-9=1。
相反,它应该是10 -(-4)*(-3)=10-12=-2。
但12并不是小于a的最大数字。
我理解如何使用python中的公式a= (a/n)(N)+(a%n)来求解答案。但是,是否有一个直观的定义来帮助我理解?
发布于 2020-12-08 22:22:34
Python 3文档给出了恒等式x == (x//y)*y + (x%y),由此可以推断出x%y == x - (x//y)*y。//表示“地板除法”;x//y是不大于x/y的最大整数。
对于x=10和y==−3,x/y是−3⅓。楼层( x//y 3⅓)为−4,因此−为−4,然后是10−(−4)*−3= 10−12 =−2。
下面是x%3的一个图表:

下面是x%-3的一个图表:

发布于 2020-12-08 22:50:06
我在这里找到了一个解析器,https://en.wikipedia.org/wiki/Remainder,似乎有两种类型的余数和一种编程语言选择使用哪一种
https://stackoverflow.com/questions/65207679
复制相似问题