python中的取模运算,向量的模的计算例题
所谓模运算,就是计算两个数相除后的余数,符号为%。比如a% b就是计算A除以b的余数,在数学语言中,如果有整数N和M,其中0=m b,使得$ a=n * b m $那么$ a \% b=a-n * b=m $。
先测试几个例子:
打印(9%5) # 4
打印(-9%5) # 1
打印(9%-5%)#-1
打印(-9%-5) # -4
可以看出,虽然数值部分相同,但正负符号的四种不同组合会产生四种完全不同的结果。那么这里面有什么规律吗?
事实上,虽然结果不同,但模运算完全遵循统一规则:
其中$\lfloor\frac{a}{b}\rfloor$表示A除以B的结果向下舍入。
例如$9\%5$,先计算$\lfloor\frac{9}{5}\rfloor$,向下取整得到1,再计算$9-1*5$得到4;
同理,$-9\%5$,先计算$\lfloor\frac{-9}{5}\rfloor$,向下取整得到-2,再计算$-9-(-2*5)$得到1;
让我们看看9\%-5美元:
最后$-9\%-5$:
虽然我知道结果是怎么算出来的,但是人脑没有计算机复杂。为避免增加大脑负担,根据以上规律,我在这里总结了一个简单的记忆方法:
对于没有负号的,两个数都是正的,直接求结果应该相对简单,而且不管符号是什么,我们只计算这个值;
有负号的,不管负号是哪个数,去掉负号,再算第一步的结果;
接下来根据负号的位置,分为三种情况。假设除数为K,去掉负号后取模的结果是M: 2。所有数字都是负数,直接等于-M。
被除数是负数,除数是正数。因为是向下取整,所以相当于最后再加一个K,也就是说模数必须大于0,结果就是K-M。
被除数为正,除数为负,正好相反,结果是M-K,注意这里的K是除数的绝对值,为正。
简单归纳:
不管有没有负数,先根据正数计算模数得到m。
两个数都是负数,结果是-m。
只有1的数是负数,负数在上面。记住结果必须是肯定的。大数-小数(除数-余数),那么就是K-M。
只有1的数是负数,负数是下一个。记住结果一定是负数,十进制-大数(余数-除数),那么就是M-K。
注意:这个规则的前提是除法的结果必须四舍五入。如果你用java来设置这个规则,你会发现完全行不通。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。