NTT 求原根
使用NTT需要保证模数mod 为质数。
通过以下代码求得一个模数的原根 , 常见的质数的原根 998244353 -> 3 1e9+7 -> 5
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | #include<bits/stdc++.h> #define ll long long #define IL inline #define RG register using namespace std; ll prm[1000],tot,N,root; ll Power(ll bs,ll js,ll MOD){ ll S = 1,T = bs; while (js){ if (js&1)S = S*T%MOD; T = T*T%MOD; js >>= 1; } return S; } IL ll GetRoot(RG ll n){ RG ll tmp = n - 1 , tot = 0; for (RG ll i = 2; i <= sqrt (tmp); i ++){ if (tmp%i==0){ prm[++tot] = i; while (tmp%i==0)tmp /= i; } } if (tmp != 1)prm[++tot] = tmp; //质因数分解 for (RG ll g = 2; g <= n-1; g ++){ bool flag = 1; for (RG int i = 1; i <= tot; i ++){ //检测是否符合条件 if (Power(g,(n-1)/prm[i],n) == 1) { flag = 0; break ; } } if (flag) return g; } return 0; //无解 } int main(){ cin >> N; root = GetRoot(N); cout<<root<<endl; return 0; } |
g是mod(r * 2 ^ k + 1)的原根
r * 2 ^ k + 1 |
r |
k |
g |
3 |
1 |
1 |
2 |
5 |
1 |
2 |
2 |
17 |
1 |
4 |
3 |
97 |
3 |
5 |
5 |
193 |
3 |
6 |
5 |
257 |
1 |
8 |
3 |
7681 |
15 |
9 |
17 |
12289 |
3 |
12 |
11 |
40961 |
5 |
13 |
3 |
65537 |
1 |
16 |
3 |
786433 |
3 |
18 |
10 |
5767169 |
11 |
19 |
3 |
7340033 |
7 |
20 |
3 |
23068673 |
11 |
21 |
3 |
104857601 |
25 |
22 |
3 |
167772161 |
5 |
25 |
3 |
469762049 |
7 |
26 |
3 |
998244353 |
119 |
23 |
3 |
1004535809 |
479 |
21 |
3 |
2013265921 |
15 |
27 |
31 |
2281701377 |
17 |
27 |
3 |
3221225473 |
3 |
30 |
5 |
75161927681 |
35 |
31 |
3 |
77309411329 |
9 |
33 |
7 |
206158430209 |
3 |
36 |
22 |
2061584302081 |
15 |
37 |
7 |
2748779069441 |
5 |
39 |
3 |
6597069766657 |
3 |
41 |
5 |
39582418599937 |
9 |
42 |
5 |
79164837199873 |
9 |
43 |
5 |
263882790666241 |
15 |
44 |
7 |
1231453023109121 |
35 |
45 |
3 |
1337006139375617 |
19 |
46 |
3 |
3799912185593857 |
27 |
47 |
5 |
4222124650659841 |
15 |
48 |
19 |
7881299347898369 |
7 |
50 |
6 |
31525197391593473 |
7 |
52 |
3 |
180143985094819841 |
5 |
55 |
6 |
1945555039024054273 |
27 |
56 |
5 |
4179340454199820289 |
29 |
57 |
3 |
作者:静默虚空
欢迎任何形式的转载,但请务必注明出处。
限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· .NET 进程 stackoverflow异常后,还可以接收 TCP 连接请求吗?
· SQL Server统计信息更新会被阻塞或引起会话阻塞吗?
· 本地部署 DeepSeek:小白也能轻松搞定!
· 传国玉玺易主,ai.com竟然跳转到国产AI
· 自己如何在本地电脑从零搭建DeepSeek!手把手教学,快来看看! (建议收藏)
· 我们是如何解决abp身上的几个痛点
· 如何基于DeepSeek开展AI项目