博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NTT 求原根
阅读量:6906 次
发布时间:2019-06-27

本文共 1784 字,大约阅读时间需要 5 分钟。

  使用NTT需要保证模数mod 为质数。

  通过以下代码求得一个模数的原根 , 常见的质数的原根  998244353 -> 3    1e9+7 -> 5

#include
#define ll long long#define IL inline#define RG registerusing 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<
<

 

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            

转载于:https://www.cnblogs.com/ccut-ry/p/9512798.html

你可能感兴趣的文章
常用的PHP知识记录
查看>>
MYSQL(python)安装记录
查看>>
(十一)构造方法的重载和成员方法的重载
查看>>
The Use Of Class Pointer
查看>>
《CLR Via C# 第3版》笔记之(二十三) - 线程锁和线程安全的概念
查看>>
Meta标签详解
查看>>
Kaggle : Display Advertising Challenge( ctr 预估 )
查看>>
jquery stop( ) 的用法 (转)
查看>>
【js】性能问题
查看>>
JS引擎线程的执行过程的三个阶段(一)
查看>>
Spark RDD Transformation 简单用例(三)
查看>>
ES6(1)
查看>>
成为Java GC专家(5)—Java性能调优原则
查看>>
作业——05 理解爬虫原理
查看>>
泛型算法的一些总结
查看>>
python 列表操作
查看>>
ServletContext和ServletConfig
查看>>
moveit setup assistant
查看>>
10种常见的软件架构模式
查看>>
SpringBoot+Mybatis+ Druid+PageHelper 实现多数据源并分页
查看>>