模運算與同餘公式的性質
所謂的同餘,顧名思義,就是許多的數被一個數d去除,有相同的餘數。d數學上的稱謂為模。如a=6,b=1,d=5,則我們說a和b是模d同餘的。因為他們都有相同的餘數1。
數學上的記法為:
a≡ b(mod d)
可以看出當n<d的時候,所有的n都對d同商,比如時鐘上的小時數,都小於12,所以小時數都是模12的同商.
對於同餘有三種說法都是等價的,分別為:
(1) a和b是模d同餘的.
(2) 存在某個整數n,使得a=b+nd .
(3) d整除a-b.
可以通過換算得出上面三個說法都是正確而且是等價的.
基本定律:
同餘公式也有許多我們常見的定律,比如相等律,結合律,交換律,傳遞律….如下面的表示:
1)a≡a(mod d)
2)對稱性 a≡b(mod d)→b≡a(mod d)
3)傳遞性 (a≡b(mod d),b≡c(mod d))→a≡c(mod d)
如果a≡x(mod d),b≡m(mod d),則
4)a+b≡x+m (mod d)
5)a-b≡x-m (mod d)
6)a*b≡x*m (mod d )
7)a/b≡x/m (mod d)
8)a≡b(mod d)則a-b整除d
9)a≡b(mod d)則a^n≡b^n(mod d)
10)如果ac≡bc(mod m),且c和m互質,則a≡b(mod m)
模運算的運算規則:
(a + b) mod p = (a mod p + b mod p) mod p (1)
(a - b) mod p = (a mod p - b mod p) mod p (2)
(a * b) mod p = (a mod p * b mod p) mod p (3)
a^b mod p = ((a mod p)^b) mod p (4)
結合率: ((a+b) mod p + c) mod p = (a + (b+c) mod p) mod p (5)
((a*b) mod p * c) mod p = (a * (b*c) mod p) mod p (6)
交換率: (a + b) mod p = (b+a) mod p (7)
(a * b) mod p = (b * a) mod p (8)
分配率: ((a +b) mod p * c) mod p = ((a * c) mod p + (b * c) mod p) mod p (9)
重要定理:若a≡b ( mod p),則對於任意的c,都有(a + c) ≡ (b + c) ( mod p);(10)
若a≡b ( mod p),則對於任意的c,都有(a * c) ≡ (b * c) ( mod p);(11)
若a≡b ( mod p),則對於任意的c,都有ac≡ bc ( mod p); (13)
相關推薦
模運算與同餘公式的性質
所謂的同餘,顧名思義,就是許多的數被一個數d去除,有相同的餘數。d數學上的稱謂為模。如a=6,b=1,d=5,則我們說a和b是模d同餘的。因為他們都有相同的餘數1。 數學上
取模運算與取餘運算的區別
1.取模運算多見於計算機領域,取餘運算一般用於數學領域。 2.取模運算(取餘運算)計算步驟 ①求整數商 c=a/b ②求模(餘數)r=a-c*b 3.兩者不同點:取模運算c向負無窮遠處取整,取餘運算c
取模運算和取餘運算
對於整型數a,b來說,取模運算或者求餘運算的方法都是: 1.求整數商: c = a/b; 2.計算模或者餘數: r = a - c*b. 求模運算和求餘運算在第一步不同: 取餘運算在取c的值時,向0方向舍入(fix()函式);而取模運算在計算c的值時,向-∞方向舍入(f
位與運算與取餘
關於位與運算&與取餘今天在研究hashmap原始碼的時候,發現其原始碼中在解決Entry分佈時,本來大多數人以為會用index = hash % length,但是原始碼中卻使用了index = hash & (lenth -1)的方式。 /** * The default initi
HDU 2035 人見人愛A^B(同餘基本性質)
原題連結:Here!思路:可以利用同餘的基本性質 ab ≡ (a%m)(b%m) (mod m) ,也非常好證明。 設 a = k1*m + c1 , b = k2*m + c2 ( k1,k2
同餘與同餘方程(擴充套件歐幾里得)
同餘應該是數論中比較基礎的一個東西了。感覺挺重要的。。。高中沒學好到大學來補了。 涉及3個數,a,b,m。就是a % m == b % m. 可以寫成:a b(mod m)。 一、同餘及其一些性質 同餘有一些顯然性質,有的時候會有很大功效。(不列舉了,一般書上都有的
[搬運]關於擴充套件歐幾里得與同餘方程
什麼是GCD? GCD是最大公約數的簡稱(當然理解為我們偉大的黨也未嘗不可)。在開頭,我們先下幾個定義: ①a|b表示a能整除b(a是b的約數) ②a mod b表示a-[a/b]b([a/b]在Pascal中相當於a div b) ③gcd(a,b)表示a和b的最大公
取模運算和求餘運算的區別
通常情況下取模運算(mod)和求餘(rem)運算被混為一談,因為在大多數的程式語言裡,都用'%'符號表示取模或者求餘運算。在這裡要提醒大家要十分注意當前環境下'%'運算子的具體意義,因為在有負數存在的情況下,兩者的結果是不一樣的。 對於整型數a,b來說,取模運算或者求餘運
String 說明 java的取模運算和取餘運算
String是一個不可變類,具體參照原因說明String s0 = "hello";String s1 = "hello";String s2 = "he"+"llo";System.out.println(s0 == s1);System.out.println(s0 ==
擴充套件歐幾里得(exgcd)與同餘詳解
exgcd入門以及同餘基礎 gcd,歐幾里得的智慧結晶,資訊競賽的重要演算法,數論的...(編不下去了 講exgcd之前,我們先普及一下同餘的性質: 若,那麼 若,,且p1,p2互質, 若,k和c為整數,而且k>0,那麼 若,那麼就可以推出,則有
同餘與模算術
以下三條常用式子: (a+b)modn=((amodn)+(bmodn))modn (a-b)modn=((amodn)-(bmodn)+n)modn abmodn=(amodn)(bmodn)modn 大整數取模: scanf("%s%d",n,&m); int len=strlen
取模與取餘運算
取模運算(“Modulo Operation”)和取餘運算(“Complementation ”)兩個概念有重疊的部分但又不完全一致。主要的區別在於對負整數進行除法運算時操作不同。取模主要是用於計算機術
同餘運算及其基本性質(證明)
首先一點是,a≡b(modm) 的原型是 amodm=b 線性運算 a≡b(modm)c≡d(modm)}⇒{a±c≡b±d(modm)a×c≡b×d(modm) 證明: m|a−b,m|c−
【題解】[牛客網NOIP賽前集訓營-提高組(第五場)]A.同餘方程 位運算
#include<cstdio> #include<algorithm> using namespace std; typedef long long ll; const ll mod=998244353; ll m,l1,l2,r1,r2; ll
同餘與逆元
同餘 前置知識 ————擴充套件歐幾里得定理 什麼是同餘 對於兩個數a,b,它們對於p取模結果相同,那麼就稱a和b在對p取模意義下同餘 公式表達a≡b(mod)p 如何求一個數的同餘 利用擴充套件歐幾里得定理 我們將該公式轉化一下 -> a%p == b%p
【Matlab】mod(取模)與取餘(rem)
mod VS rem Matlab 中, 區分mod(取模)與取餘(rem)操作. 二者的區別如下 作用於 (a, b) 當 a 和 b 都是正數的時候, 二者結果一樣, 常規操作 當任何一個位置出現負數的時候, 先按正數算出結果的絕對值. 然後對於結果 mod
取模與取餘的區別
轉載地址:https://blog.csdn.net/coder_panyy/article/details/73743722 其實取模和取餘在目標上是一致的,但是因為語言對取餘和取模上定義的不同,導致得到的結果不同。 對取餘和取模定義不同的語言中,兩者的不同點只有
關於取模運算(mod)和求餘(rem)運算
通常情況下取模運算(mod)和求餘(rem)運算被混為一談,因為在大多數的程式語言裡,都用’%’符號表示取模或者求餘運算。在這裡要提醒大家要十分注意當前環境下’%’運算子的具體意義,因為在有負數存在的情況下,兩者的結果是不一樣的。 對於整型數a,b來說,取模運算或者求餘運算的方法都是: 
隨機數生成器與線性同餘法產生隨機數
隨機數生成器與線性同餘法產生隨機數 1、隨機數生成器與/dev/random: 隨機數生成器,顧名思義就是能隨機產生數字,不能根據已經產生的數預測下次所產生的數的“器”(器存在軟體與硬體之分),真正的隨機數生成器其產生的隨機數具有隨機性、不可預測性、不可重現性。 什麼是真正的隨機數生成器
求模運算(%)和按位與運算(&)
最近看了看HashMap原始碼,覺得裡面的一個按位與運算用的很優雅,記錄一下。 jdk7中,HashMap是“陣列+連結串列”的結構,為了讓HashMap裡的元素分佈的更加均勻,就要在陣列中給每個元素一個合適的位置,求模運算是一個不錯的方法,但是,jdk7中使用了一種更加優雅的方法,原始碼中的方法