首页
社区
课程
招聘
[求助]如何快速求素数的本原根
发表于: 2010-8-25 14:40 21474

[求助]如何快速求素数的本原根

2010-8-25 14:40
21474
如何快速求素数的本原根
有没有相关的算法 最好是c++的

如果a是素数p的本原根,则
a, a2, …, ap-1在 mod p下都不相同

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
2
http://en.wikipedia.org/wiki/Primitive_root_modulo_n#Finding_primitive_roots
2010-8-25 16:05
0
雪    币: 179
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
设x-1所有不同的质因子为p1,p2....pm

则对于任何的2<=a<=x-1,判定a是否为x的原根,仅需检验a^((x-1)/p1),a^((x-1)/p2),...a^((x-1)/pm)这m个数中,是否存在一个数mod x为1 若存在,a不是x的原根,否则就是

x-1所有的不同质因子 是不是指小于x-1的所有的素数
a^(x-1)/p1 (mod p) 这里a^(x-1)/p1不知道怎么分解
2010-8-25 18:24
0
雪    币: 67
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
比如说,p=13,a=2
则p-1=12=2^2*3
计算
2^(12/2)=2^6=12mod13
2^(12/3)=2^4=3mod13
均不等于1,所以a是原根。
2010-8-26 01:40
0
雪    币: 179
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
2^(12/5)=2^6=12mod13 呢

12/5=2? 还是要拆开来计算
2010-8-26 14:10
0
雪    币: 67
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
呃,为什么要计算12/5呢……
仔细看看,想想为什么我要将p-1写成分解的形式吧。
2010-8-26 18:03
0
游客
登录 | 注册 方可回帖
返回
//