题目链接 : 传送门
题目大意: 求一个质数的原根个数。
先普及一下原根的定义:
设m是正整数,a是整数,若a模m的阶等于euler(m),则称a为模m的一个原根。
eg: m=7,euler(7) = 6(1,2,3,4,5,6)
则:
- 1 1^(n)mod7=1! = 6
- 2 2^(n)mod7={2 4 1}!=6
- 3 3^(n)mod7={3,2,6,4,5,1}==6 故3是模7的原根
- 4 4^(n)mod7={4,2,1}!=6
- 5 5^(n)mod7={5,4,6,2,3,1}==6 故5是模7的原根
- 6 6^(n)mod7={6,1}!=6
故7的原根有两个。
也可以这样来想: a^(p-1)mod(p)&