使用NTT需要保證模數mod 為質數。 通過以下代碼求得一個模數的原根 , 常見的質數的原根 998244353 -> 3 1e9+7 -> 5 #include<bits/stdc++.h> #define ll long long ...
原根 為了簡單起見,只考慮素數的情況。 並不是只有素數才有原根 定義:對於素數 p ,如果存在一個正整數 lt a lt p ,使得 a , a , ..., a p 模 p 的值取遍 , ,...,p 的所有整數,稱 a 是 p 的一個原根 primitive root ,其實就是循環群的生成元。 如果 a j equiv a i mod p ,則 i equiv j mod p 。這里有兩個例 ...
2019-09-11 22:10 0 389 推薦指數:
使用NTT需要保證模數mod 為質數。 通過以下代碼求得一個模數的原根 , 常見的質數的原根 998244353 -> 3 1e9+7 -> 5 #include<bits/stdc++.h> #define ll long long ...
當需要求質數\(P\)的原根\(G\),只需枚舉\(a \in [2,P - 1]\),檢驗對\(P - 1\)的所有質因子\(p_i\),\(a^{\frac{P - 1}{p_i}} \mod P\)是否等於\(1\),若都不等於\(1\),則\(a\)為\(P\)的原根 51Nod原根 ...
一個數m如果有原根,則其原根個數為phi(phi(m))。特別地,對素數有phi(p)=p-1。 假設g是奇素數p的一個原根,則g^1,g^2,...,g^(p-1)在模p意義下兩兩不同,且結果恰好為1~p-1,由此可以定義“離散對數”,與連續數學中的對數有異曲同工之妙。 離散對數又叫 ...
定義: 設m>1,gcd(a,m)=1,使得成立的最小正整數d為a對模m的階,記為δm(a) 如果δm(a)=φ(m),則稱a是模m的原根 定理:設m>1,gcd(a,m)=1,那么正整數x是同於方程的一個根當且僅當δm(a) | x 定理:由歐拉定理得 gcd(a,n ...
Primitive Roots Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
測試結果: ...
1、原根的定義: 原根,是一個數學符號。設m是正整數,a是整數,若a模m的階等於φ(m)(m的歐拉函數),則稱a為模m的一個原根。 階:a和模m互質,使ad ≡1(mod m)成立的最小正整數d稱為a對模m的階。例如:22≡1(mod3),2對模3的階為2。 假設一個數g對於P來說是原根 ...
時隔兩三個月重新打$ntt$的時候,已經忘記了常見模數的原根。 想要回憶原根的求法,以備不時之需,然而也忘記了。 所以頹了大神$yxs$的證明博客,為了防止再次遺忘,來復讀一遍大神的做法和證明。 做法: 因為原根往往很小,所以可以采用暴力枚舉的方法。 然而直接暴力$check ...