博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
线性筛法与积性函数
阅读量:4498 次
发布时间:2019-06-08

本文共 1906 字,大约阅读时间需要 6 分钟。

欧拉函数:

\(1.\varphi(p)=p-1\)

证明:显然


\(2.\varphi(i*p)=p*\varphi(i)\) , \(if\space i \bmod p = 0\)

引理1:\(\varphi(p^a)=(p-1)*p^{a-1}\)

证明:比 \(p^a\) 小的数一共有 \(p^a-1\) 个,其中与 \(p^a\) 不互质的且小于 \(p^a\)

,即 \(p\) 的倍数 \(p*t\) 一共有 \(p^{a-1}-1\) 个,则 \(\varphi(p^a)=p^a-1-(p^{a-1}-1)=(p-1)*p^{a-1}\)

引理2:\(\varphi(n)=n*(1-\frac{1}{p_1})*(1-\frac{1}{p_2})*···*(1-\frac{1}{p_k})\)

证明:

\(\varphi(n)\)

\(=\varphi(p_1^{a_1})*\varphi(p_2^{a_2})*···*\varphi(p_k^{a_k})\)

\(=(p_1-1)*p_1^{a_1-1}*(p_2-1)*p_2^{a_2-1}*···*(p_k-1)*p_k^{a_k-1}\)

\(=(p_1^{a_1}-p_1^{a_1-1})*···*(p_k^{a_k}-p_k^{a_k-1})\)

\(=p_1^{a_1}*(1-\frac{1}{p_1})*···*p_k^{a_k}*(1-\frac{1}{p_k})\)

\(=(p_1^{a_1}*p_2^{a_2}*···*p_k^{a_k})*(1-\frac{1}{p_1})*(1-\frac{1}{p_2})*···*(1-\frac{1}{p_k})\)

\(=n*(1-\frac{1}{p_1})*(1-\frac{1}{p_2})*···*(1-\frac{1}{p_k})\)

证明:

\(i\) 为正整数,且 \(i=p_1^{k_1}*p_2^{k_2}*···*p_n^{k_n}\)

\(\varphi(i)=i*(1-\frac{1}{p_1})*···*(1-\frac{1}{p_n})\)

\(\because i\bmod p=0\)

\(\therefore p为i的质因子\)

\(\therefore \varphi(i*p)=i*p*\prod_{i=1}^{n} (1-\frac{1}{p_i})=\varphi(i)*p\)


\(3.\varphi(i*p)=\varphi(i)*(p-1)\) , \(if\space i \bmod p \ne 0\)

证明:

\(\because i \bmod p \ne 0\)

\(\therefore p不为i的质因子\)

\(\therefore \varphi(i*p)=i*p*(1-\frac{1}{p})*\prod_{i=1}^n (1-\frac{1}{p_i})=i*(p-1)*\prod_{i=1}^n (1-\frac{1}{p_i})=\varphi(i)*(p-1)\)


于是可以通过这三个性质再配合上线性筛预处理处欧拉函数。

Code:

void Get(int listsize){    memset(isprime,1,sizeof(isprime));    isprime[1]=false;    for(int i=2;i<=listsize;i++)    {        if(isprime[i])        {             prime[++primesize]=i;             phi[i]=i-1;         }         for(int j=1;j<=primesize&&i*prime[j]<=listsize;j++)         {            isprime[i*prime[j]]=false;            if(i%prime[j]==0)             {                phi[i*prime[j]]=phi[i]*prime[j];                break;            }            phi[i*prime[j]]=phi[i]*(prime[j]-1);        }    }}

转载于:https://www.cnblogs.com/wwlwQWQ/p/11377343.html

你可能感兴趣的文章
无序数组排序后的最大相邻差值
查看>>
CSS——img标签消除3px
查看>>
如何得到yum的rpm包
查看>>
Swift 设置导航栏透明
查看>>
机器学习的一些常用算法
查看>>
蘑菇街基于Docker的私有云实践
查看>>
堆和优先队列
查看>>
宽度优先搜索
查看>>
leetcode63 Unique Paths II
查看>>
兼容多浏览器的本地存储
查看>>
3分钟实现网页版多人文本、视频聊天室 (含完整源码)
查看>>
取消一个本地svn目录与svn的联系
查看>>
C++中值传递(pass-by-value)和引用传递(pass-by-reference)
查看>>
maven也是apache下的项目
查看>>
python -- 程序异常与调试(程序调试)
查看>>
TensorFlow的学习
查看>>
HAOI2007 反素数ant
查看>>
从提升树到 XGBoost, 原理简介
查看>>
java--遇到NoSuchMethodError通用解决思路
查看>>
DDS视图&Button控件
查看>>