【算法专题】积性函数

【参考】

浅谈一类积性函数的前缀和 by skywalkert

任之洲数论函数.pdf

【积性函数】

积性函数的约数和,前缀和,相互卷积也是积性函数。

1.f(1)=1。

2.性质一:对于n=∏pi^ki,有f(n)=∏f(pi^ki)

性质二:对于完全积性函数,还有f(n)=∏f(pi)^ki以及f(n^k)=f(n)^k

常见的积性函数:

1.d(n)=Σd|n1,表示n的因子个数,即d=i*i

2.σ(n)=Σd|nd,表示n的因子和,即σ=i*id

3.i(n)=1,恒等函数

4.id(n)=n,单位函数

5.e(n)=[n=1],元函数,即f=f*e

6.φ(n)=Σ[(n,i)=1]*1,欧拉函数

7.μ(n),莫比乌斯函数,μ(n)=(-1)^k,k为n的素因子个数,有重复素因子时μ=0

【狄利克雷卷积】

定义两个数论函数f,g的狄利克雷卷积:(f*g)(n)=Σd|nf(d)*g(n/d)。

1.莫比乌斯函数,e(n)=Σd|nμ(d),即e=μ*i。

莫比乌斯反演,由g=f*i,得f=g*μ

证明:f=g*μ=f*i*μ=f*e=f。

即由g(n)=Σd|nf(d),得f(n)=Σd|ng(d)*μ(n/d)。

类似的,由g(n)=Σn|df(d),得f(n)=Σn|dg(d)*μ(d/n)。

2.欧拉函数,n=Σd|nφ(d),即id=φ*i。

由反演得,φ=id*μ,即φ(n)/n=Σd|nμ(d)/d。

【和式Σ变换技巧】

基本法则(具体数学):

1.分配律,Σkc*ak=c*Σkak,即提出与Σ无关的乘数。

2.结合律,将相邻Σ的条件结合或分离。

3.交换律,即Σ的枚举可以改变顺序。

4.一般分配律,Σj,kaj*bk=(Σaj)*(Σbk)

5.多重交换律,当相邻Σ枚举域相关时,需满足:

[j∈J][k∈K(j)]=[k∈K‘][j∈J‘(k)]

通常J=K‘是所有整数集合,第二重根据操控二重和式性质的p(j,k)推出。

6.换元,即更换Σ的枚举元。

7.艾弗森约定,即将Σ底端限制变成条件,如Σi∈Ii=Σi*[i∈I]。

简化技巧:

1.

原文地址:https://www.cnblogs.com/onioncyc/p/8461267.html

时间: 2024-11-02 06:59:49

【算法专题】积性函数的相关文章

浅谈一类积性函数的前缀和(转载)

本文转自:http://blog.csdn.net/skywalkert/article/details/50500009 另外,莫比乌斯反演和杜教筛其他可转到 http://blog.leanote.com/post/totziens/%E8%8E%AB%E6%AF%94%E4%B9%8C%E6%96%AF%E5%8F%8D%E6%BC%94 写在前面 笔者在刷题过程中遇到一些求积性函数前缀和的问题,其中有一类问题需要在低于线性时间复杂度的算法,今天就来浅析一下这类问题的求解方法,当作以后讲课

HDU2879 HeHe 数论积性函数

题目名字有点搓,做题时没做出来,学长他们做出了,发现跟网上题解的思路没太大区别,网上所有题解的分析也都转自同一个地方,看样子这道题目不是那么好想的,没办法按照解析画了半天,计算器按了半天,理解了,自己敲出来了,觉得值得留念,打算再刷几道这样的 转自:http://blog.csdn.net/kksleric/article/details/8096914 定义:对于正整数n的一个算术函数 f(n),若f(1)=1,且当a,b互质时f(ab)=f(a)f(b),在数论上就称它为积性函数.若对于某积

POJ2480 Longge's problem 欧拉函数的应用 && 积性函数

题意很简单,求sum(gcd(i,n))   1<=i<=n; 这题看到后第一反应并没有里用积性函数的性质,不过也可以做,欣慰的是我反应还是比较快的 设f(n)=gcd(1,n)+gcd(2,n)+....+gcd(n-1,n) + gcd(n,n), 用g(n,i)表示满足 gcd(x,n)=i的 x的个数 (x小于n),则 f(n)=sum{i*g(n,i)}; 同时又利用 扩展欧几里德的性质  gcd(x,n)=i  的充要条件是 gcd(x/i,n/i)==1,所以 满足 x/i的解有

HDU 4002 Find the maximum (欧拉函数-积性函数的性质(2011年大连赛区网络赛第二题)

[题目链接]:click here~~ [题目大意]: 给出一个整数n,求一个数x,x在1到n之间,并且x/φ(x)最大(其中φ(x)为x的欧拉函数). [思路]: 由欧拉函数为积性函数,即:如果 则有: 且: 则有: 要使f(x)最大,须使x含尽量多的不同素数因子. 代码: /* * Problem: HDU No.4002 * Running time: 1700MS * Complier: java * Author: javaherongwei * Create Time: 0:08 2

常见积性函数(转自百科)

前面做hdu1452 用过积性函数这个东西...刚才遇到又不会了.所以弄一点资料提醒一下自己 在非数论的领域,积性函数指所有对于任何a,b都有性质f(ab)=f(a)f(b)的函数. 在数论中的积性函数:对于正整数n的一个算术函数 f(n),若f(1)=1,且当a,b互质时f(ab)=f(a)f(b),在数论上就称它为积性函数. 若对于某积性函数 f(n),就算a, b不互质,也有f(ab)=f(a)f(b),则称它为完全积性的.[1] s(6)=s(2)*s(3)=3*4=12; s(20)=

读贾志鹏《线性筛法与积性函数》笔记

1.欧拉筛法在线性时间内求素数以及欧拉函数 代码: 1 procedure get; 2 var i,j,k:longint; 3 begin 4 tot:=0; 5 fillchar(check,sizeof(check),false); 6 for i:=2 to n do 7 begin 8 if not(check[i]) then 9 begin 10 inc(tot); 11 p[tot]:=i; 12 fai[i]:=i-1; 13 end; 14 for j:=1 to tot

HDU 1452 Happy 2004(因子和的积性函数)

题目链接 题意 : 给你一个X,让你求出2004的X次方的所有因子之和,然后对29取余. 思路 : 原来这就是积性函数,点这里这里这里,这里讲得很详细. 在非数论的领域,积性函数指所有对于任何a,b都有性质f(ab)=f(a)f(b)的函数. 在数论中的积性函数:对于正整数n的一个算术函数 f(n),若f(1)=1,且当a,b互质时f(ab)=f(a)f(b),在数论上就称它为积性函数. 若对于某积性函数 f(n),就算a, b不互质,也有f(ab)=f(a)f(b),则称它为完全积性的. s(

poj 2480 Longge&amp;#39;s problem 积性函数性质+欧拉函数

题意: 求f(n)=∑gcd(i, N) 1<=i <=N. 分析: f(n)是积性的数论上有证明(f(n)=sigma{1<=i<=N} gcd(i,N) = sigma{d | n}phi(n / d) * d ,后者是积性函数),能够这么解释:当d是n的因子时,设1至n内有a1,a2,..ak满足gcd(n,ai)==d,那么d这个因子贡献是d*k,接下来证明k=phi(n/d):设gcd(x,n)==d,那么gcd(x/d,n/d)==1,所以满足条件的x/d数目为phi(

POJ 2480 Longge&amp;#39;s problem 积性函数

题目来源:POJ 2480 Longge's problem 题意:求i从1到n的gcd(n, i)的和 思路:首先假设m, n 互质 gcd(i, n*m) = gcd(i, n)*gcd(i, m) 这是一个积性函数积性函数的和还是积性函数 由欧拉函数知识得 phi(p^a) = p^a - p^(a-1) p是素数 a是正整数 得到终于答案f(n) = f(p1^a1)*f(p2^a2)*...*f(pn^an) 当中f(p^a) = a*(p^a-p^(a-1))+p^a #includ