2021.08.10 Euler函数总结

知识:

记 φ(n) 表示在 [1,n] 中与 n互质的数的个数。

1.p为质数,则

\[φ(p^l)=p^l-p=p^{l-1}(p-1)
\]

注:每p个数中就有一个数整除p^l

延伸1:若

\[n=p_1^{a_1}*p_2^{a_2}*P_3^{a_3}\cdots p_k^{a_k}
\]

\[φ(n)=p_1^{a_1-1}*(p_1-1)*p_2^{a_2-1}*(p_2-1)*p_3^{a_3-1}*(p_3-1)\cdots p_k^{a_k-1}*(p_k-1)
\]

延伸2:(m,n)=1,则

\[φ(mn)=φ(m)*φ(n)
\]

延伸3:若m|n,则

\[φ(mn)=m*φ(n)
\]

延伸4:令

\[f(n)=\sum_{d|n}φ(d)
\]

则f(n)=n

注:f(n)为积性函数。令

\[n=p_1^{a_1}*p_2^{a_2}*P_3^{a_3}\cdots p_k^{a_k}
\]

\[\begin{aligned}
f(p_i^{a_i})
& =φ(1)+φ(p_i)+φ(p_i^2)+\cdots +φ(p_i^{a_i})\\
& =1+(p_i-1)+p_i(p_i-1)+p_i^2(p_i-1)+\cdots +p_i^{a_i-1}(p_i-1)\\
& =p_i^{a_i}
\end{aligned}
\]

2.若p为质数,则

\[φ(p)=p-1
\]

延伸1:若p为质数,且p是n的最小质因子,p|n,即n=pt,则

\[φ(n)=\left\{
\begin{array}{lr}
φ(p)*φ(t)=(p-1)*φ(t) & (p,t)=1\\
p*φ(t) & (p,t)>1
\end{array}
\right.
\]

3.2|φ(n)(n>2)

注:若(x,n)=1,则(n-x,n)=1,所以当除了n=2*x时,所有x可以两两凑对。

练习题:

UVA11327 Enumerating Rational Numbers - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

重点:

1.线性筛欧拉函数

//euler函数+前缀和+暴力二分~
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std; const int N=2e5+10;
typedef long long ll;
ll top,k,vis[N],prime[N],oula[N],sum[N]; inline ll read(){
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')w=-1;
ch=getchar();
}
while(ch<='9'&&ch>='0'){
s=s*10+ch-'0';
ch=getchar();
}
return s*w;
}
int gcd(int x,int y){
return y==0?x:gcd(y,x%y);
} int main(){
//线性筛欧拉函数
memset(vis,1,sizeof(vis));
oula[1]=1;vis[1]=0;
for(int i=2;i<=2e5;i++){
if(vis[i])oula[i]=i-1,prime[++top]=i;
for(int j=1;j<=top;j++){
if(i*prime[j]>2e5)break;
vis[i*prime[j]]=0;
if(i%prime[j])oula[i*prime[j]]=(prime[j]-1)*oula[i];
else{
oula[i*prime[j]]=prime[j]*oula[i];
break;
}
}
} for(int i=1;i<=2e5;i++)sum[i]=sum[i-1]+oula[i]; while(~scanf("%lld",&k)){
if(!k)return 0;
else if(k==1)cout<<"0/1"<<endl;
else if(k==2)cout<<"1/1"<<endl;
else{
--k;
int x=lower_bound(sum+1,sum+200000+1,k)-sum;
if(sum[x]==k){
cout<<x-1<<"/"<<x<<endl;
continue;
}
--x;
k-=sum[x];
++x;
if(k==1){
cout<<"1/"<<x<<endl;
continue;
}else{
--k;
for(int j=2;j<x;j++){
if(gcd(j,x)==1)--k;
if(!k){
cout<<j<<"/"<<x<<endl;
break;
}
}
}
}
}
return 0;
}

UVA10299 Relatives - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

重点:

1.性质1延伸1

//euler函数模板!!!刚打过UVA11327,本座记得很清楚~
//1e9的数据有点大,需要单点求euler函数——分解质因数
//详情请查看《初等数论2》第一章欧拉函数部分
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
using namespace std; const int N=1e9+10;
int k; inline int read(){
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')w=-1;
ch=getchar();
}
while(ch<='9'&&ch>='0'){
s=s*10+ch-'0';
ch=getchar();
}
return s*w;
}
void euler(int x){
int ans=x,n=x;
for(int i=2;i*i<=n;i++){
if(n%i==0){
ans=ans/i*(i-1);
while(n%i==0)n/=i;
}
}
if(n>1)ans=ans/n*(n-1);
cout<<ans<<endl;
} int main(){
while(~scanf("%d",&k)){
if(!k)return 0;
if(k==1)cout<<"0"<<endl;
else euler(k);
}
return 0;
}

UVA10179 Irreducable Basic Fractions - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

//euler函数模板!!!刚打过UVA11327,本座记得很清楚~
//1e9的数据有点大,需要单点求euler函数——分解质因数
//详情请查看《初等数论2》第一章欧拉函数部分
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
using namespace std; const int N=1e9+10;
int k; inline int read(){
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')w=-1;
ch=getchar();
}
while(ch<='9'&&ch>='0'){
s=s*10+ch-'0';
ch=getchar();
}
return s*w;
}
void euler(int x){
int ans=x,n=x;
for(int i=2;i*i<=n;i++){
if(n%i==0){
ans=ans/i*(i-1);
while(n%i==0)n/=i;
}
}
if(n>1)ans=ans/n*(n-1);
cout<<ans<<endl;
} int main(){
while(~scanf("%d",&k)){
if(!k)return 0;
euler(k);
}
return 0;
}

2021.08.10 Euler函数总结的更多相关文章

  1. 2021.08.30 前缀函数和KMP

    2021.08.30 前缀函数和KMP KMP算法详解-彻底清楚了(转载+部分原创) - sofu6 - 博客园 (cnblogs.com) KMP算法next数组的一种理解思路 - 挠到头秃 - 博 ...

  2. 新手C#SQL Server使用记录2018.08.10

    主键(PrimaryKey):主键就是每个数据行(记录)的唯一标识,不会有重复值的列(字段)才能当做主键.一个表可以没有主键,但是这样会很难处理表,因此一般情况表都要设置主键. 主键有两张选用策略,分 ...

  3. 2021.08.16 P1260 工程规划(差分约束)

    2021.08.16 P1260 工程规划(差分约束) 重点: 1.跑最短路是为了满足更多约束条件. P1260 工程规划 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 造 ...

  4. 2021.08.16 P1078 文化之旅(最短路)

    2021.08.16 P1078 文化之旅(最短路) 题意: n个地,k个信仰,每个地都有自己的信仰,信仰之间会相互排斥,同信仰之间也会相互排斥,有m条路,问从s到t的最短距离是多少? 有一位使者要游 ...

  5. 2021.08.16 P1300 城市街道交通费系统(dfs)

    2021.08.16 P1300 城市街道交通费系统(dfs) P1300 城市街道交通费系统 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 城市街道交费系统最近创立了.一 ...

  6. 2021.08.16 P1363 幻象迷宫(dfs,我感受到了出题人浓浓的恶意)

    2021.08.16 P1363 幻象迷宫(dfs,我感受到了出题人浓浓的恶意) P1363 幻象迷宫 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 幻象迷宫可以认为是无限 ...

  7. 2021.08.09 P5658 括号树(树形结构)

    2021.08.09 P5658 括号树(树形结构) [P5658 CSP-S2019] 括号树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 太长,在链接中. 分析及代码 ...

  8. 2021.08.09 P4868 Preprefix sum(树状数组)

    2021.08.09 P4868 Preprefix sum(树状数组) P4868 Preprefix sum - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 前缀和(pr ...

  9. 2021.08.09 P6037 Ryoku的探索(基环树)

    2021.08.09 P6037 Ryoku的探索(基环树) P6037 Ryoku 的探索 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 重点: 1.树的性质 2.基环树的性质 ...

随机推荐

  1. 5月10日 python学习总结 单表查询 和 多表连接查询

    一. 单表查询  一 语法 select distinct 查询字段1,查询字段2,... from 表名 where 分组之前的过滤条件 group by 分组依据 having 分组之后的过滤条件 ...

  2. PCIe Tandem PROM 方法

    PCIe Tandem PROM 方法 什么是Tandem PROM? 简单总结:市面多数的FPGA都是SRAM型,需要在上电时从外部存储器件完成代码的加载,对于具有PCIe功能的SRAM FPGA而 ...

  3. LCS&&LRC&&LIS问题

    注:最近笔试题经常碰到DP动态规划的问题,但是由于本人没有接触过DP,笔试后看到别人家的答案简洁又漂亮,真的羡慕:难的DP自己可能不会,那再见到常见的LCS和LRS以及LIS为问题总该会吧: 资料参考 ...

  4. python 常用模块函数使用

    1.collections模块在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter.deque.defaultdict ...

  5. Zookeeper 的典型应用场景 ?

    Zookeeper 是一个典型的发布/订阅模式的分布式数据管理与协调框架,开发人员 可以使用它来进行分布式数据的发布和订阅. 通过对 Zookeeper 中丰富的数据节点进行交叉使用,配合 Watch ...

  6. switch 是否能作用在 byte 上,是否能作用在 long 上, 是否能作用在 String 上?

    在 Java 5 以前,switch(expr)中,expr 只能是 byte.short.char.int.从 Java 5 开始,Java 中引入了枚举类型,expr 也可以是 enum 类型,从 ...

  7. Linux Yum仓库源配置

    Yum概念:Yum软件仓库的作用是为了进一步简化RPM管理软件的难度以及自动分析所需软件包及其依赖关系的技术 Yum配置仓库源放置位置:/etc/yum.repo.d/ :配置文件需以 .repo 结 ...

  8. 学习Redis(三)

    一.安装部署 1.常规安装 1.安装 # wget http://download.redis.io/releases/redis-3.0.7.tar.gz # tar xf redis-3.0.7. ...

  9. C语言之基本语句分类(知识点5)

    一.C语言基本语句分类 ①数据定义语句 ②赋值语句 ③函数调用语句 ④表达式语句 ⑤流程控制语句 ⑥复合语句(多个大括号的层次) ⑦空语句 二.注意 ①scanf("%d,%d", ...

  10. (stm32学习总结)—GPIO位带操作

    本章参考资料:<STM32F10X-中文参考手册>存储器和总线构架章节.GPIO 章节,<CM3 权威指南 CnR2>存储器系统章节. 位带简介 位操作就是可以单独的对一个比特 ...