zoukankan      html  css  js  c++  java
  • 数论函数及其变换

    数论函数及其变换

    日常%虞大。

    数论函数:定义域为正整数,值域为实数的函数。

    积性函数:满足(f(ab)=f(a)f(b) (a,b)=1)的数论函数。

    完全积性函数:满足(f(ab)=f(a)f(b))的数论函数。

    一些数论函数:

    • (varepsilon(n)),当n=1时为1,否则值为0。叫做单位函数。

    • (d(n)),表示n的正因数个数,叫做因子个数函数。它是积性函数。

      证明:一定把一个数素因子分解为(p1^{q1}p2^{q2}...pl^{ql}),并且pi各不相同。那么(d(n)=Pi (q_i+1))。设(n=ab,(a,b)=1),因此a和b也可以表示成素因子分解的形式,并且没有共同的素因子。积性性质是显然的。

    • (sigma(n)),表示n的正因子和,叫做因子和函数。它是积性函数。

      证明:(sigma(n)=Pi(frac{p_i^{q_1+1}-1}{p_i-1})),积性性质也是很显然的。

    • (varphi(n)),表示与n互素且小于n的正整数个数。它是积性函数。

      证明:前面的博文提到过。推出(varphi(pq)=pq-p-q-1)就很好证明了。

    • (mu(n)=egin{aligned} 1 && n=1 \ 0 && 有完全平方因子 \ (-1)^p && 是p个不同素因子积\ end{aligned})

      它是积性函数。证明手动推一下即可。

    数论函数的值可以用线性筛求出。举一个筛(φ(n))的栗子,其它以此类推。

    对于素数p,只会筛到一次,直接令$φ(p) = p - 1 $即可。

    对于一个合数n,它只会被筛到一次,只会被最小的素因子p筛到,而且此时大循环到了k,即(n = pk)。若此时(p mid k),说明n中含p的幂大于1。因此,(φ(n) = φ(k) · p),否则,说明((p, k) = 1),从而n中含 p的幂等于1,此时由(φ)的积性,可得(φ(n) = φ(k) · φ(p) = φ(k) · (p - 1))。这样,就实现了线性筛求(φ(n))的值。(from 虞大)

    莫比乌斯反演

    首先,(sum_{d|n}mu(d)=varepsilon(n))。由于如果数n有完全平方因子,那么(mu(d)=0)。因此只需要考虑(n=p1*p2*...*pl)的情况。显然(sum_{d|n}mu(d)=sum_{r=0}^lC_l^r(-1)^r=(1-1)^l=0)

    莫比乌斯反演是这个柿子:(F(n)=sum_{d|n}f(d)Leftrightarrow f(n)=sum_{d|n}F(frac{n}{d})mu(d))

    我们来用和式变换推一下:(sum_{d|n}F(frac{n}{d})mu(d)=sum_{d|n}mu(d)sum_{i|frac{n}{d}}f(i)=sum_{i|n}f(i)sum_{d|frac{n}{i}}mu(d)=f(n))

    另外,莫比乌斯反演还有一种形式:(F(n)=sum_{n|d}f(d)Leftrightarrow f(n)=sum_{n|d}mu(frac{d}{n})F(d))。表示懒得看证明了,就这样吧。

  • 相关阅读:
    boost::asio发送与传输相关的几个函数,备忘
    当ASIO::ASYNC_READ与SOCKET的ASYNC_READ_SOME的区别
    boost::asio keepalive
    boost asio ——深入框架
    Boost.Asio和ACE之间关于Socket编程的比较
    OCP-1Z0-052-V8.02-15题
    JavaScript对象和数组
    Oracle 11g New 使用RMAN 增强功能
    Flex中集合的类型
    Flex中基于列表的一系列MX组件及相互关系
  • 原文地址:https://www.cnblogs.com/MyNameIsPc/p/9258108.html
Copyright © 2011-2022 走看看