数论 专题整理

东西多,而且比较高妙,和数学的关系较大。

没写完,才写了一点,先去冲csp了,冲完再更

基础

质数, 分解质因数,整除,互质,gcd/lcm

放一起是因为都很基本

trick: 利用质因子间的独立性, 分解问题

例1

(1...n) 所有数的 lcm,(nle 10^8),1s

先筛出来质数。考虑这些数的lcm,就是每种质数取最高次

最高能取多少次?对于每个 (p),取最大的 (k) 使得 (p^kle n),那它就是 (k) 次。

枚举每个 (p),计算 (k),乘起来。

复杂度: (O(dfrac{n}{ln n} imes log n)=O(n))

例2 SDOI2008沙拉公主的困惑

这里用到一个东西: 互质的规律性

对于一个 (p),设 (f(i)) 表示 (i) 是否与 (p) 互质 (1互质,0不互质),那么 (f(i)=f(i+p),forall iin N^{*})

那对于这个题,计算出 (varphi(m!) imes dfrac{n!}{m!}) 即可。

(varphi(m!)) 就把 (m) 分解质因数计算即可。讨论一下 (m>mod) 的情况。

例3 CF1295D

(gcd(a,m)=gcd(a+x,m),xin [0,m))

首先把 (a,m) 约掉一个 (gcd)。然后就变成:

计算多少 (xin[0,m)) 满足 (gcd(a+x,m)=1),也就是 (a+x)(m) 互质

根据互质的规律性,我们发现这玩意可以平移,然后就等价于有多少个 (x)(m) 互质。这玩意就是 (varphi(m))

考虑到我们约掉了一个 (gcd),也就是说,答案是

(varphi(dfrac{m}{gcd(a,m)}))

例4 CF615D

(n) 所有因数的积。(n) 用分解质因数的形式给出,质数的个数 (le 2 imes 10^5),每个质数都在 (2 imes 10^5) 以内。

有一个东西:(n) 的因数,相当于是 (n) 分解质因数后每个 (p^k),选择一个指数 (c(cle k)),然后把 (p^c) 乘起来。这个方法可以得到 (n) 的所有因数。

因此,我们用这个生成法,考虑每个质数 (p) 的贡献,设它是 (k) 次。那它显然可以取 (1,2,3...k) 次,都可以。这些乘起来就是 (p^{frac{k(k+1)}{2}})

然后它被算了多少次呢?显然,其它的质因数可以随便取,每取一次就会把它算一次。那把其它质因数的指数 (+1) 乘起来,就是它被算的次数。

然后把每个贡献乘起来就行了。

原文地址:https://www.cnblogs.com/LightningUZ/p/15415886.html