原根
如果m > 1, 并且 n 和 m 互质
则 $n^t\equiv 1(mod m)$
的最小的t,称为n模m的阶(或周期)
则对于任意的$n^x\equiv 1(mod m)$
t|x
我们已知$n^{\phi (m)}\equiv 1(mod m)$
所以
t|$\phi(m)$
特殊情况时t == $\phi(m)$
此时n称为m的原根
求t的方法 先求出$\phi(m)$
然后质因子分解 (不能用质因子分解 是所有的因子)
这样:
int res = phi[n]; for(int i = 2; i <= sqrt(phi[n] + 0.5); i++) { if(res % i == 0) { if(i * i == res) v.push_back(i); else v.push_back(i), v.push_back(res / i); } }
最小的p使得$n^{p}\equiv 1(mod m)$ 的即为t
题目:HDU - 1395
求原根的方法
先把$\phi(m)$分解质因子
$\phi(m) = p_{1}^{a1}*p_{2}^{a2}*\cdots *p_{k}^{ak} $
然后枚举g
如果 对任意的$i\in [1, k]$
$g^\frac{\phi (m)}{p_{i}}\neq 1(mod m)$
则g为m的一个原根
自己选择的路,跪着也要走完。朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。