`算法知识` 欧拉函数, 积性函数

官方链接

oi-wiki

数论函数

数论里的函数 (积性函数, 欧拉函数等), 定义域都是 正整数
… 因为数论一般研究的都是: 自然数.
… 包括下面涉及的所有函数/变量, 都默认是在 (正整数)域的.

所以, 数论函数 也可以看成是一个 数列, 故, 一般写成 f ( n ) f(n) f(n), 而不是 f ( x ) f(x) f(x)

积性函数

若函数 f ( n ) f(n) f(n) 满足 f ( 1 ) = 1 f(1)=1 f(1)=1 ∀ ( x , y ) 互质 \forall (x,y)互质 (x,y)互质 都有 f ( x y ) = f ( x ) f ( y ) f(xy)=f(x)f(y) f(xy)=f(x)f(y),则 f ( n ) f(n) f(n)积性函数
… 可以发现, 积性函数互质 是联系一起的; 只有两者互质, 才符合积性.

若函数 f ( n ) f(n) f(n) 满足 f ( 1 ) = 1 f(1)=1 f(1)=1 ∀ x , y \forall x,y x,y 都有 f ( x y ) = f ( x ) f ( y ) f(xy)=f(x)f(y) f(xy)=f(x)f(y),则 f ( n ) f(n) f(n)完全积性函数


积性函数的例子:

  • 欧拉函数
  • 约数函数: F( x)表示x这个数的约数个数, 他等于: (a1 + 1) * (a2 + 1) * ... (ai为各个质因子的量级)
    … 令Pow( x)为: x的最小的质因子的量级.
    if( i % Prime[ j] == 0){
         
    	F[ Prime[ j] * i] = F[ i] / Pow[ i] * ( Pow[ i] + 1);
    }
    else{
         
    	F[ Prime[ j] * i] = F[ i] * 2;
    }
    
  • 约数之和函数: F( x)表示x这个数的 所有约数之和, 他等于: ( 1 + p 1 + p 1 2 + . . . ) ∗ ( 1 + p 2 + p 2 2 + . . . ) . . . (1 + p_1 + p_1^2 + ...) * ( 1 + p_2 + p_2^2 + ...) ... (1+p1+p12+...)(1+p2+p22+...)...
    Min( x)为: x的 ( 1 + p 1 + p 1 2 + . . . ) ,    p 1 为其最小质因子 (1 + p_1 + p_1^2 + ...), \ \ p_1为其最小质因子 (1+p1+p12+...),  p1为其最小质因子

欧拉函数

欧拉函数 ϕ ( x ) \phi( x) ϕ(x), 定义域为 正整数, 表示: 在[1, x]内, 有多少整数与x互质.

ϕ ( 1 ) = 1 = 1 \phi( 1) = {1} = 1 ϕ(1)=1=1 (1与任何数互质, 包括自身)
ϕ ( 2 ) = 1 = 1 \phi( 2) = {1} = 1 ϕ(2)=1=1
ϕ ( 3 ) = 1 , 2 = 2 \phi( 3) = {1, 2} = 2 ϕ(3)=1,2=2
ϕ ( 4 ) = 1 , 3 = 2 \phi( 4) = {1, 3} = 2 ϕ(4)=1,3=2
ϕ ( 5 ) = 1 , 2 , 3 , 4 = 4 \phi( 5) = {1, 2, 3, 4} = 4 ϕ(5)=1,2,3,4=4

如果x是质数, 显然其 ϕ ( x ) = x − 1 \phi( x) = x-1 ϕ(x)=x1, 除了x, 所有[1, x-1]范围的数 都与x互质.

性质

  • 欧拉函数 是 积性函数.
    ϕ ( 12 ) = 4 , ϕ ( 2 ) = 1 , ϕ ( 6 ) = 2 , ϕ ( 3 ) = 2 , ϕ ( 4 ) = 2 \phi( 12) = 4, \phi( 2) = 1, \phi( 6) = 2, \phi( 3) = 2, \phi( 4) = 2 ϕ(12)=4,ϕ(2)=1,ϕ(6)=2,ϕ(3)=2,ϕ(4)=2
    因为3, 4互质, 但是2, 6不是互质的.
    故, ϕ ( 3 ) ∗ ϕ ( 4 ) = 4 = ϕ ( 12 ) \phi( 3) * \phi( 4) = 4 = \phi( 12) ϕ(3)ϕ(4)=4=ϕ(12), 但是, 从 ϕ ( 2 ) ∗ ϕ ( 6 ) \phi( 2) * \phi( 6) ϕ(2)ϕ(6)并不能推出 ϕ ( 12 ) \phi(12) ϕ(12), 因为两者不互质.
    证明: 简单证明, 如果你知道欧拉函数的公式的话
    … 对于任意一个数, 其欧拉函数公式为: ϕ ( p 1 k 1 ∗ p 2 k 2 ∗ p 3 k 3 . . . ) = ( p 1 k 1 ∗ p 2 k 2 ∗ p 3 k 3 . . . ) ∗ p 1 − 1 p 1 ∗ p 2 − 1 p 2 ∗ p 3 − 1 p 3 ∗ . . . \phi( p_1^{k_1} * p_2^{k_2} * p_3^{k_3} ...) = ( p_1^{k_1} * p_2^{k_2} * p_3^{k_3} ...) * \frac{ p_1 - 1}{ p_1} * \frac{ p_2 - 1}{ p_2} * \frac{ p_3 - 1}{ p_3} * ... ϕ(p

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值