뫼비우스 함수
$$ \mu(n) = \begin{cases} 1 & n=1 \\ (-1)^k & n = p_1 p_2 \cdots p_k\ (\text{서로 다른 소수}) \\ 0 & p^2 \mid n \end{cases} $$
핵심 성질은 디리클레 합
$$ \sum_{d \mid n} \mu(d) = [\,n = 1\,]. $$
이 한 줄이 모든 뫼비우스 반전의 엔진이다.
뫼비우스 반전 공식
두 산술함수 \(f, g\) 가
$$ g(n) = \sum_{d \mid n} f(d) $$
관계이면, 이를 뒤집어
$$ f(n) = \sum_{d \mid n} \mu(d)\, g\!\left(\tfrac{n}{d}\right) $$
를 얻는다. 약수 합으로 정의된 양에서 원래 양을 복원하는 도구다. 디리클레 합성곱으로 보면 \(g = f * \mathbf{1}\) 이고 \(\mathbf{1}^{-1} = \mu\) 이므로 \(f = g * \mu\).
정수론적 카운팅의 표준 변형
자주 쓰는 형태는 "조건이 gcd로 걸린 합"이다.
$$ \sum_{i=1}^{n}\sum_{j=1}^{m} [\gcd(i,j)=1] = \sum_{i,j} \sum_{d \mid \gcd(i,j)} \mu(d) = \sum_{d=1}^{\min(n,m)} \mu(d) \left\lfloor \tfrac{n}{d} \right\rfloor \left\lfloor \tfrac{m}{d} \right\rfloor. $$
\([\gcd=1] = \sum_{d\mid \gcd}\mu(d)\) 를 대입하고 합의 순서를 바꾸는 것이 정석. 일반화하면 \(\gcd = k\) 조건은 \(i,j\) 를 \(k\) 로 나눠 위 식으로 환원한다.
정수 나눗셈 블록(divisor blocks)
\(\lfloor n/d \rfloor\) 는 서로 다른 값이 \(O(\sqrt n)\) 개뿐이다. 같은 값을 갖는 \(d\) 구간을 묶으면
$$ \sum_{d=1}^{n} f(d)\, g\!\left(\lfloor n/d\rfloor\right) $$
를 \(\mu\) 의 전구간 합(prefix sum)과 결합해 \(O(\sqrt n)\) 에 계산한다. 이것이 "뫼비우스 + 블록 분할" 콤보.
복잡도
| 작업 | 비용 |
|---|---|
| \(\mu\) 선형 체로 전부 | \(O(N)\) |
| gcd 카운팅 직접 합 | \(O(\min(n,m))\) |
| 블록 분할 결합 | \(O(\sqrt n)\) (전처리 후) |