綜述:
取模運算(“Modulo Operation”)和取余運算(“Complementation ”)兩個概念有重疊的部分但又不完全一致。主要的區別在于對負整數進行除法運算時操作不同。
取模主要是用于計算機術語中。取余則更多是數學概念。
取模運算
定義:
三位水仙花數計算Python。給定一個正整數p,任意一個整數n,一定存在等式 :
其中 k、r 是整數,且 0 ≤ r < p,則稱 k 為 n 除以 p 的商,r 為 n 除以 p 的余數。
乍一看和求在定義上算沒什么太大的區別,但是實際大有不同。
與取余運算區別
對于整型數a,b來說,取模運算或者求余運算的方法都是:
1.求 整數商: c = a/b;
python找水仙花數,2.計算模或者余數: r = a - c*b.
但他們在計算時候兩者的不同點只有一個 取余運算在計算商值向0方向舍棄小數位
取模運算在計算商值向負無窮方向舍棄小數位
同時,也可以這樣理解: 取余,遵循盡可能讓商的絕對值小的原則
取模,遵循盡可能讓商小的原則
即取余(rem)和取模(mod)在被除數、除數同號時,結果是等同的,但是當a,b異號時會有區別,所以要特別注意異號的情況。
python4,例如:
就 a = 7, b = 4 情況而言
c = 7 / 4;
求整數商c,如進行求模運算c = -2(向負無窮方向舍入),求余c = -1(向0方向舍入);
同理
7mod 4 = 1(商 = -1 或 -2,-2<-1,取商=-2)
python編程語言特征、7 mod -4 = -1(商 = -1或-2,-2<-1,取商=-2)
-7 mod -4 = -3(商 = 1或2,1<2,取商=1)
歸納:當a和b符號一致時,求模運算和求余運算所得的c的值為正且一致,因此結果一致,但c為負則不同。
另外還有一點小區別:
另外各個環境下%運算符的含義不同,比如c/c++,java 為取余,而python則為取模。
編程中模運算常用性質
python類?1.) n % p 得到結果的正負由被除數n決定,與p無關。例如:7%4 = 3, -7%4 = -3, 7%-4 = 3, -7%-4 = -3。
模運算與基本四則運算有些相似,但是除法例外。其規則如下: (a + b) % p = (a % p + b % p) % p (1)
(a - b) % p = (a % p - b % p) % p (2)
(a * b) % p = (a % p * b % p) % p (3)
a ^ b % p = ((a % p)^b) % p (4)
ps: 前四個很常用。
python怎么用?另附: 結合律:
((a+b) % p + c) % p = (a + (b+c) % p) % p (5)
((a*b) % p * c)% p = (a * (b*c) % p) % p (6) 交換律:
(a + b) % p = (b+a) % p (7)
(a * b) % p = (b * a) % p (8) 分配律:
(a+b) % p = ( a % p + b % p ) % p (9)
python和java,((a +b)% p * c) % p = ((a * c) % p + (b * c) % p) % p (10)
重要定理 若a≡b (% p),則對于任意的c,都有(a + c) ≡ (b + c) (%p);(11)
若a≡b (% p),則對于任意的c,都有(a * c) ≡ (b * c) (%p);(12)
若a≡b (% p),c≡d (% p),則 (a + c) ≡ (b + d) (%p),(a - c) ≡ (b - d) (%p),
(a * c) ≡ (b * d) (%p),(a / c) ≡ (b / d) (%p); (13)
經常采用模運算求解的問題(ACM)
用python求水仙花數?(以后開文章詳細說。 )
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态