数论 专题整理

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

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

基础

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

放一起是因为都很基本

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

例1

求 \(1...n\) 所有数的 lcm,\(n\le 10^8\),1s

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

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

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

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

例2 SDOI2008沙拉公主的困惑

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

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

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

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

例3 CF1295D

\(\gcd(a,m)=\gcd(a+x,m),x\in [0,m)\)

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

计算多少 \(x\in[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\times 10^5\),每个质数都在 \(2\times 10^5\) 以内。

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

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

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

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

上一篇:题解 黑客


下一篇:程序设计:互质数