积性函数与狄利克雷卷积

积性函数

【定义】

若对于一个数论函数 \(f\),有:

\((a,b)=1\),有 \(f(a\times b) = f(a) \times f(b)\)

\(f\) 是一个积性函数。

特别地,若对于任意数 \(a,b\),有 \(f(a\times b)=f(a)\times f(b)\)

\(f\) 是一个完全积性函数。

积性函数举例:

欧拉函数,因数个数,因数和 ……

完全积性函数举例:

幂函数 ……

【作用】

这说明,\(f(a\times b)\) 是可以被 \(f(a)\)\(f(b)\) 递推出来的。

欧拉函数的递推代码:

int pr[N], cnt = 0;
bool f[N] = {};

int phi[N] = {};

void init() {
	memset(f, true, sizeof f);
	f[0] = f[1] = false;
	phi[1] = 1;
	for (int i = 2; i <= n; i++) {
		if (f[i]) {
			pr[++cnt] = i;
			phi[i] = i - 1;
		}
		for (int j = 1; j <= cnt && pr[j] * i <= n; j++) {
			//此时pr[j]就是pr[j]*i的最小质因数 
			f[pr[j] * i] = false;
			if (i % pr[j])
				phi[pr[j] * i] = phi[pr[j]] * phi[i];
			else
				phi[pr[j] * i] = phi[i] * pr[j];
			if (i % pr[j] == 0)
				break;
		}
	}
}

狄利克雷卷积

\(f,g\) 是两个数论函数,则它们的狄利克雷卷积 \((f*g)(n)=\displaystyle \sum_{d|n}f(d)\times g(\frac{n}{d})\)

性质:若 \(f,g\) 为积性函数,则 \(f*g\) 仍为积性函数。

证明:设 \(ab=n,(a,b)=1\),记 \(h=f*g\)

\[h(n)=h(ab)=\displaystyle\sum_{d|ab}f(d)\times g(\frac{ab}{d}) \]

\[=\displaystyle\sum_{d_1|a,d_2|b}f(d_1d_2)\times g(\frac{ab}{d_1d_2}) \]

注意到因为 \((a,b)=1\),所以 \((d_1,d_2)=1\),这就可以利用积性函数的性质了。

\[\displaystyle=\sum_{d_1|a}f(d_1)\times g(\frac{a}{d_1})\sum_{d_2|b}f(d_2)\times g(\frac{b}{d_2}) \]

\[=h(a)\times h(b) \]

证毕。

推论\(f(n)=f(p_1^{a_1})f(p_2^{a_2})\cdots f(p_k^{a_k})\),即 \(n\) 的分解形式。

posted @ 2024-02-01 09:31  FLY_lai  阅读(16)  评论(0编辑  收藏  举报