SCUT - 485 - 质因数计数 - 原根

Posted yinku

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SCUT - 485 - 质因数计数 - 原根相关的知识,希望对你有一定的参考价值。

https://scut.online/p/485

给定a和n,求有多少个质数p,满足n是使得a^n=1 mod p成立的最小正整数。

翻译:求有多少个质数p,使得a模p的阶delta_m(a)是n

先验证 a^n=1 mod p 成立

那么假如还有更小的m使得 a^m=1 mod p 成立,则这个p不合要求

由阶的性质有delta_m(a)|n,故只需要检查n的所有因子就可以了。

但其实不需要检查所有因子,只需要检查n的所有质因子。(从板子上面可以看出来,但是为什么)

即 a^(p_i) = 1 mod p 是否成立,假如恒不成立,则n是a模p的阶,其中p_i是n的每种质因子。

证明如下:很显然的,原本我们要检查n的所有因子才能确定阶,但是有一个更好的办法。

假如还有更小的m使得 a^m=1 mod p 成立,那么m的倍数km也一定满足 a^(km)=1 mod p 成立,那么从n中只去除一个质因子p_i,假如这个t=(n/p_i)有 a^t=1 mod p ,则可能存在更小的m使得 a^m=1 mod p 成立。否则假如 a^t != 1 mod p ,则t的所有因子也都不需要检查了。

这样就只需要检查log次。

以上是关于SCUT - 485 - 质因数计数 - 原根的主要内容,如果未能解决你的问题,请参考以下文章

BZOJ 3992 SDOI2015 序列统计

SCUT - 290 - PARCO的因数游戏 - 博弈论

将一个正整数分解质因数。python3.6问题,输出为空,是哪里出了问题,求大神解答

数论入门2——gcd,lcm,exGCD,欧拉定理,乘法逆元,(ex)CRT,(ex)BSGS,(ex)Lucas,原根,Miller-Rabin,Pollard-Rho

在分解质因数的时候,一般从啥的质因数考虑?

code lib map