[笔记] 数论函数小记-程序员宅基地

1.定义

  • $\epsilon(n)=\begin{cases} 1& n=1 \\ 0& n >1 \end{cases}$
  • $I(n)=1$
  • $id(n)=n$
  • $d(n)$因子个数
  • $\sigma(n)$因数和
  • $\mu (n)$莫比乌斯函数
  • $\varphi (n)$欧拉函数

2.狄利克雷卷积

  • $h(n)=\sum_{d|n}\space f(d)g(\frac{n}{d})$
  • $h=f*g$
  • 性质:

  1. 交换律$(f∗g=g∗f)$;
  2. 结合律$((f∗g)∗h=f∗(g∗h))$;
  3. 分配律$((f+g)∗h=f∗h+g∗h)$;
  • 举个例子,对于交换律,我们看狄利克雷卷积的式子,实质上就是$n$的每一个约数带入$f$中的值,乘上与之对应的约数在gg中的值。
  • 常见的(加深理解):
  • $d=I*I$
  • $\sigma=id*I$
  • $\varphi=\mu*id$

3.莫比乌斯函数:

  (1)$\sum_{d|n}\mu(d)=\begin{cases}1& \text{n=1}\\ 0& \text{n>1} \end{cases}= \epsilon(n)$,即$\mu*I=\epsilon$

  • 对于 $n=1$,等式显然成立。
  • 设 $n> 1$ 并写 $n=p_1^{a_1}…p_k^{a_k}$ ,在 $\sum_{d|n}\mu{(d)}$ 中非零的项仅来自于 $d=1$ 与 $n$ 的约数是不同素数的乘积,即
  • $\sum_{d|n}\mu{(d)} \\ = \mu(1)+\mu(p_1)+…+\mu(p_k)+\mu(p_1p_k)+…+\mu(p_{k-1}p_k)+…+\mu(p_1p_2…p_k) \\ =1+\binom{k}{1}(-1)+\binom{k}{2}(-1)^2+…+\binom{k}{k}(-1)^k \\=0$

  (2)$\sum_{d|n}\frac{\mu(d)}{d}=\frac{\varphi(n)}{n}$

  • 证明:
  • 首先$\sum_{d|n}\varphi(d)=n$
  • 即$\varphi*I=id$
  • 所以$\varphi*I*\mu=id*\mu$
  • 所以$\varphi*\epsilon=id*\mu$
  • 所以$\varphi(n)=\sum_{d|n}\mu(d)*\frac{n}{d}$
  • 再把两边同除以n
  • $\frac{\varphi(n)}{n}=\sum_{d|n}\frac{\mu(d)}{d}$

  (3)莫比乌斯反演

  • 定义:$F(n)$和$f(n)$是定义在非负整数集合上的两个函数,并且满足

$F(n)=\sum_{d|n}f(d)$

  • 那么有

$f(n)=\sum\mu(d) F(\frac{n}{d})$

  • 这个定理称之为莫比乌斯反演
  • 大致证明:
  • $F(n)=\sum_{d|n}f(d)$
  • 即$F=f*I$
  • 然后都卷上$\mu$
  • $F*\mu=f*I*\mu$
  • 因为狄利克雷卷积具有交换律和结合律,又因为$\mu*I=\epsilon$
  • 所以$f*(I*\mu)=f*\epsilon=f$,所以$f=\mu*F$
  • 带回狄利克雷卷积得到原式
  • 对于莫比乌斯反演,还有一种常用的式子:

$F(n)=\sum_{n|d}f(d)$

$f(n)=\sum_{n|d}\mu(\frac{d}{n})F(d)$

  • 大致证明:
  • $\sum_{n|d}\mu(\frac{d}{n})F(d)$
  • $=\sum_{n|d}\mu(\frac{d}{n})\sum_{d|x}f(x)$
  • $=\sum_{n|x}f(x) \sum_{n|d且d|x} \mu(\frac{d}{n})$
  • $=\sum_{n|x}f(x)\sum_{d'|\frac{x}{n}}\mu(d')$
  • $=\sum_{n|x}f(x)\epsilon(\frac{x}{n})$
  • $=f(n)$

线性筛$\mu(n)$

inline void MU(int n) {
    mu[1]=1; for(R i=2;i<=n;++i) {
        if(!vis[i]) pri[++cnt]=i,mu[i]=-1;
        for(R j=1;j<=cnt&&pri[j]*i<=n;++j) {
        
vis[i
*pri[j]]=true; if(i%pri[j]==0) break; mu[i*pri[j]]=-mu[i]; } } }
  1. 形如$\sum_{i=1}^N\sum_{j=1}^M[gcd(i,j)==1]$,直接换成$\sum_{i=1}^N\sum_{j=1}^M\sum_{d|gcd(i,j)}\mu(d)$,然后把$d$提出来,写成$\sum_{i=1}^{\frac{N}{d}}\sum_{j=1}^{\frac{M}{d}}\sum_{d=1}^N\mu(d)$,即$\sum_{d=1}^N\mu(d)\lfloor\frac{N}{d}\rfloor\lfloor\frac{M}{d}\rfloor$
  2. 形如$\sum_{i=1}^N\sum_{j=1}^M[gcd(i,j)==k]$,直接改成$\sum_{i=1}^{\lfloor\frac{N}{k}\rfloor}\sum_{j=1}^{\lfloor\frac{M}{k}\rfloor}[gcd(i,j)==1]$
  3. 形如$\sum_{i=1}^N\sum_{j=1}^Mij[gcd(i,j)==k]$(见大佬博客
  4. 形如$\sum_{i=1}^N\sum_{j=1}^Mlcm(i,j)$(见我的or大佬博客)
  5. 形如$\sum_{i=1}^N\sum_{j=1}^Mgcd(i,j)$,直接用欧拉反演化成$\sum_{i=1}^{N}\sum_{j=1}^M\sum_{d|gcd(i,j)}\varphi(d)$,然后把$d$提出来$\sum_{i=1}^{\lfloor \frac{N}{d}\rfloor}\sum_{j=1}^{\lfloor \frac{M}{d} \rfloor}\sum_{d=1}^N\varphi(d)$,即$\sum_{d=1}^N\varphi(d)\lfloor \frac{N}{d}\rfloor \lfloor \frac{M}{d} \rfloor$
  6. 所以当有一个类似$\sum_{d|gcd(i,j)}$的式子时,大致要把它拆掉,把$i.j$除以$n$,成为$.../n,\sum_{d=1}^{N}$(显然=。=)

4.整除分块

  • 求$\sum_{i=1}^n \lfloor \frac{n}{i} \rfloor$时,
  • 随便$O(n)$求,可是我们要$O(\sqrt{n})$去求;
  • 通过观察,发现$ \lfloor \frac{n}{i} \rfloor $在一定区间内是不变的,并且每个区间的右端点都是$n/ \lfloor n/i \rfloor $,得出这个结论后就可以$O(\sqrt{n})$去求
    for(R l=1,r;l<=n;l=r+1) {
        r=min(n/(n/l),n); 
        ans+=(r-l+1)*(n/l);
    }
  • 有时候,可能推出来的式子不一定就是一个很裸的整除分块,可能会与某些积性函数相乘,如:$\mu,\varphi$...... 这时候,我们就需要对这些函数统计一个前缀和。因为,每当我们使用整除分块跳过一个区间的时候,其所对应的函数值也跳过了一个区间。所以此时,就需要乘上那一个区间的函数值。

 

5.欧拉函数

  • 有一个性质$\sum_{d|n} \varphi(d)=n$
  • 所以造就了欧拉反演(雾)(大佬的详解
  • 求$\sum_{i=1}^N\sum_{j=1}^M\space gcd(i,j)\space(n<m)$
  • 原式
  • $=\sum_{i=1}^N\sum_{j=1}^M\sum_{d|gcd(i,j)}\varphi(d)$
  • 把$d$提出来
  • $=\sum_{i=1}^{\lfloor \frac{N}{d} \rfloor} \sum_{j=1}^{\lfloor \frac{M}{d} \rfloor} \sum_{d=1}^N\varphi(d)$
  • $=\sum_{d=1}^{N}\varphi(d)\lfloor \frac{N}{d} \rfloor\lfloor \frac{M}{d} \rfloor$

 

转载于:https://www.cnblogs.com/Jackpei/p/10989300.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30292843/article/details/97861034

智能推荐

Hadoop+大数据的学习资料+实际项目+hadoop源码(中英双语)_hadoop大数据平台构建与应用 米洪 案例源码-程序员宅基地

文章浏览阅读703次,点赞2次,收藏3次。链接:https://pan.baidu.com/s/12l62pcm1ix0UgwKLb576aQ提取码:dcde喜欢点个赞_hadoop大数据平台构建与应用 米洪 案例源码

Go协程的底层原理(图文详解)

Go程序开发进阶保姆级教程,结合源码对Go协程的底层原理进行图文详解(为什么要有协程、协程的本质、协程是如何执行的、G-M-P调度模型、如何实现协程的并发、协程的抢占式调度)

aes解密流程图_(转)AES 加密算法的原理详解-程序员宅基地

文章浏览阅读1.9k次。(转)AES 加密算法的原理详解原文链接如下:AES简介高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥,具体的加密流程如下图:下面简单介绍下各个部分的作用与意义:明文P没有经过加密的数据。密钥K用来加密明文的密码,在对称加密算法中,加密与解密的密钥是相同的。密..._aes cbc 原理图

Android如何使用XML自定义属性

在res/values文件下定义一个attrs.xml文件,代码如下:在布局中使用,示例代码如下:

Java OCR tesseract 图像智能字符识别技术 Java代码实现_tesocr jave-程序员宅基地

文章浏览阅读10w+次,点赞173次,收藏149次。接着上一篇OCR所说的,上一篇给大家介绍了tesseract 在命令行的简单用法,当然了要继承到我们的程序中,还是需要代码实现的,下面给大家分享下java实现的例子。拿代码扫描上面的图片,然后输出结果。主要思想就是利用Java调用系统任务。下面是核心代码:package com.zhy.test;import java.io.BufferedReader;import_tesocr jave

我用Python分析了1500家电商的销售数据,竟发现了进口车厘子的秘密_爬虫 淘宝车厘子-程序员宅基地

文章浏览阅读519次,点赞2次,收藏2次。图片来源:互联网众所周知,中国是智利车厘子最主要的出口对象,占据了其95%的市场份额。智利驻华大使馆商务参赞娜塔曾表示:“2020-2021产季车厘子实现了丰收,预计今年有50万吨左右的车厘子进入中国市场。”自2020年12月中旬开始,智利海运车厘子陆续到达中国,运输成本较此前空运方式大幅下滑。这意味着,国内消费者将能以更低的价格买到车厘子。然而,近日国内已有多地进口车厘子核酸检测结果为阳性,在这种情况下,你还敢大呼“车厘子自由”吗?01 数据获取本文利用Python采集了淘宝网1585.._爬虫 淘宝车厘子

随便推点

oracle tnslistener 无法启动,Oracle监听器服务不能启动的解决方法-程序员宅基地

文章浏览阅读2.2k次。Oracle监听器服务不启动的时候可采取以下措施予以解决:一、连接主机字符串,提示没有监听器SVRMGR> connect internal/oracle@orcl;ORA-12541: TNS:no listenerSVRMGR>二、运行监听器,提示地址的协议专用组件指定不正确在开始菜单运行中键入lsnrctlLSNRCTL for 32-bit Windows: Version 9..._error oracle tns listener

javaScript | 练习:给出一个数组,用循环遍历数组找出数组中的最大值和最小值 如:给出数组 let arr = [3, 6, 4, 8, 11, 90, 1]_遍历一个数组并找出数组中的最大值 和最小值js使用for循环-程序员宅基地

文章浏览阅读365次,点赞9次,收藏6次。最后,使用 `document.write()` 方法将计算出的最小值和最大值输出到网页上,并通过 `` 标签换行,以便清晰地显示两个不同的结果。- 接着,初始化了两个变量 `min` 和 `max`,它们分别用来存储数组中的最小值和最大值。初始值都设为数组的第一个元素 `arr[0]`。` 结构来分别比较当前遍历到的元素是否为数组中的最小值和最大值,并据此更新 `min` 和 `max` 变量。- 首先,使用 `new Array()` 创建了一个新的数组 `arr` 并初始化了其中的元素。_遍历一个数组并找出数组中的最大值 和最小值js使用for循环

react的事件机制(合成事件)_1. react 事件机制-程序员宅基地

文章浏览阅读158次。react的事件机制_1. react 事件机制

【LeetCode】(力扣) c/c++刷题-136.只出现一次的数字-程序员宅基地

文章浏览阅读50次。【代码】【LeetCode】(力扣) c/c++刷题-136.只出现一次的数字。

ACM的算法(觉得很好,有层次感)_前向星 acm算法与实现-程序员宅基地

文章浏览阅读644次。ACM的算法(觉得很好,有层次感)POJ上的一些水题(可用来练手和增加自信) (poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,poj2255,poj3094) 初期: 一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) _前向星 acm算法与实现

php笔记-程序员宅基地

文章浏览阅读57次。【1】windows下php运行环境安装【2】php连接MySQL【3】centos7下用yum的方式安装php7.2【4】编译式安装php【5】php日志文件【6】php.ini配置【7】php-fpm.conf重要参数详解【8】扩展mysql【1】windows下php运行环境安装参考连接#下载地址https://windows.php.net/download#php-7.3#解压安装包至任意目录#结合apache或nginx进行配置即可###名词解释...

推荐文章

热门文章

相关标签