Loading [MathJax]/extensions/TeX/AMSmath.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >欧拉函数详解

欧拉函数详解

作者头像
attack
发布于 2018-04-11 05:31:00
发布于 2018-04-11 05:31:00
1.1K00
代码可运行
举报
运行总次数:0
代码可运行

欧拉函数

我们用ϕ(n)表示欧拉函数

定义:ϕ(n)表示对于整数n,小于等于n中与n互质的数的个数

性质

1.ϕ(n)为积性函数

证明:

此处证明需要用到下面计算方法1中的内容,建议先看后面再回过头来看这里

假设存在p,q,且pq=n

将n,p,q进行质因数分解

那么

因为

显然

这种方法也是常见的证明一个函数是积性函数的方法

2.

3.1到n中与n互质的数的和为

计算方法

计算单值欧拉函数

假设我们需要计算

分情况讨论

1.当n=1时

很明显,答案为1

2.当n为质数时

根据素数的定义,答案为n-1

(仅有n与n不互质)

3.当$n$为合数时

我们已经知道了n为素数的情况

不妨对n进行质因数分解

假设$k=1$

那么

证明:

考虑容斥,与一个数互素的数的个数就是这个数减去与它不互素的数的个数

因为p是素数,所以在中与其不互素的数为

得证

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#define LL long long 
using namespace std;
int main()
{
    LL N;
    while(cin>>N&&N!=0)
    {
        int limit=sqrt(N),ans=N;
        for(int i = 2; i <= limit ; ++i)
        {
            if(N%i==0) ans=ans/i*(i-1);
            while(N%i==0) N=N/i;
        }
        if(N>1) ans=ans/N*(N-1);
        printf("%d\n",ans);
    }
    return 0;
}

线性筛

因为欧拉函数是积性函数

因此可以使用线性筛法

性质1

若p为素数,则

证明:

在1-p中,只有

性质2

且p为素数

这一步同时利用了性质1和欧拉函数的积性

性质3

,且p为素数,

证明:

没怎么看懂,丢一个链接

http://blog.csdn.net/Lytning/article/details/24432651

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#define LL long long 
using namespace std;
const int MAXN=1e6+10;
int prime[MAXN],tot=0,vis[MAXN],phi[MAXN],N=10000;
void GetPhi()
{
    for(int i=2;i<=N;i++)
    {
        if(!vis[i])
        {
            prime[++tot]=i;
            phi[i]=i-1;
        }
        for(int j=1;j<=tot&&prime[j]*i<=N;j++)
        {
            vis[ i*prime[j] ] = 1; 
            if(i%prime[j]==0)
            {
                phi[ i*prime[j] ]=phi[i]*prime[j];
                break;
            }
            else phi[ i*prime[j] ]=phi[i]*(prime[j]-1);
        }
    }
}
int main()
{
    GetPhi();
    cin>>N;
    printf("%d\n",phi[N]);
    return 0;
}

例题

放几道水题

http://poj.org/problem?id=2407

题解

http://poj.org/problem?id=2478

题解

https://www.luogu.org/problemnew/show/P2158

题解

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-01-27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
浅谈积性函数的线性筛法
假设$n = p_1^{a_1} p_2^{a_2} \dots p_k^{a_k}$
attack
2018/07/27
6080
欧拉函数及其相关性质的证明
数中,其中既是p1的倍数,又是p2的倍数的数有N/(p1⋅p2)个。根据容斥原理,NNN中去掉p1​和p2的倍数:
fishhh
2022/08/31
4640
欧拉函数及其相关性质的证明
欧拉 函数
什么是互质 如果两个正整数,除了1以外,没有其他公因子,我们就称这两个数是互质关系(coprime)。比如,15和32没有公因子,所以它们是互质关系。这说明,不是质数也可以构成互质关系。
全栈程序员站长
2022/09/23
4460
欧拉 函数
数论及数论四大定理
数论是纯粹数学的分支之一,主要研究整数的性质。整数可以是方程式的解(丢番图方程)。有些解析函数(像黎曼ζ函数)中包括了一些整数、质数的性质,透过这些函数也可以了解一些数论的问题。透过数论也可以建立实数和有理数之间的关系,并且用有理数来逼近实数(丢番图逼近)。 按研究方法来看,数论大致可分为初等数论和高等数论。初等数论是用初等方法研究的数论,它的研究方法本质上说,就是利用整数环的整除性质,主要包括整除理论、同余理论、连分数理论。高等数论则包括了更为深刻的数学研究工具。它大致包括代数数论、解析数论、计算数论等等。
Coggle数据科学
2019/09/12
3.1K0
数论及数论四大定理
欧拉函数、欧拉定理学习笔记
\varphi(n) = \sum \limits _{i=1}^n \left[ i \nmid n \right]
Clouder0
2022/09/23
9600
数论 欧拉函数_数论欧拉函数
其中p1, p2……pn为n的所有质因数,n是不为0的整数。φ(1)=1(唯一和1互质的数就是1本身)。
全栈程序员站长
2022/09/23
3520
数论 欧拉函数_数论欧拉函数
欧拉函数的几条重要性质
⑥ 若N是质数p的k次幂,φ(N)=p^k-p^(k-1)=(p-1)p^(k-1),因为除了p的倍数外,其他数都跟N互质。
glm233
2020/09/28
8890
欧拉函数的几条重要性质
欧拉函数
通式:φ(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn) 其中 p1, p2……pn 为 x 的所有质因数,x 是不为 0 的整数 φ(1)=1(唯一和 1 互质的数就是 1 本身)【注意:每种质因数只一个。比如 12=223】
Cell
2022/02/25
4690
欧拉函数
欧拉函数最全总结
计算这个值的方法就叫做欧拉函数,以φ(n)表示。在1到8之中,与8形成互质关系的是1、3、5、7,所以 φ(n) = 4。
全栈程序员站长
2022/09/23
2K0
欧拉函数最全总结
poj 2478 Farey Sequence(欧拉函数是基于寻求筛法素数)
2.欧拉定理:若a与n互质。那么有a^φ(n) ≡ 1(mod n),经经常使用于求幂的模。
全栈程序员站长
2022/07/05
3220
欧拉函数求法
φ(x)=x*(p1-1)/p1*(p2-1)/p2*(p3-1)/p3…*(pn-1)/pn 其中p1,p2,p3…是x的质因数;
全栈程序员站长
2022/09/23
3780
浅谈欧拉函数[通俗易懂]
欧拉函数听起来很高大上,但其实非常简单,也是NOIP里的一个基础知识,希望大家看完我的博客能有所理解。 数论是数学的一个分支,它只讨论正整数的性质,所以以下都是针对正整数进行研究的。
全栈程序员站长
2022/09/23
1.3K0
√n求单值欧拉函数
基本定理: 首先看一下核心代码: 核心代码 原理解析: 当初我看不懂这段代码,主要有这么几个问题: 1.定理里面不是一开始写了一个n*xxx么?为什么代码里没有*n? 2.ans不是*(prime[i
attack
2018/04/12
8660
√n求单值欧拉函数
C++初等数论
数学知识的根基对学好编程至关重要。本文和大家讲讲在编程中要用到的数论知识。如同余式、欧拉定理和欧拉函数、费马小定理、威尔逊定理、裴蜀定理、模运算意义下的逆元、扩展欧几里得算法、孙子定理(中国剩余定理)。
一枚大果壳
2024/03/11
2740
C++初等数论
BZOJ3288: Mato矩阵(欧拉函数 高斯消元)
Mato同学最近正在研究一种矩阵,这种矩阵有n行n列第i行第j列的数为gcd(i,j)。
attack
2018/07/27
2280
uva 11426 欧拉函数的运用
对于互质的两个数 a,b (a<b<=n), gcd(a,b) = 1 是显然的。
用户2965768
2019/08/01
3390
欧拉函数
欧拉函数 表示的是小于等于 且和 互质的正整数的个数。(易知 )
hotarugali
2022/03/13
1.1K0
欧拉函数
如果对于任意两个正整数m和n,均有f(mn)=f(m)f(n),就称为完全积性函数。
饶文津
2020/05/31
9000
BZOJ4805: 欧拉函数求和(杜教筛)
欧拉函数求和 Description 给出一个数字N,求sigma(phi(i)),1<=i<=N Input 正整数N。N<=2*10^9 Output 输出答案。 Sample Input 10 Sample Output 32 HINT 直接大力杜教筛 #include<cstdio> #include<map> #include<ext/pb_ds/assoc_container.hpp> #include<ext/pb_ds/hash_policy.hpp> #define LL lo
attack
2018/04/10
1.1K0
数学--数论--广义欧拉降幂(模板)
未使用欧拉筛: 适用于较少次数计算的欧拉降幂。 #include <bits/stdc++.h> #define ll long long using namespace std; ll a,m,b; inline ll read(ll m){ register ll x=0,f=0;char ch=getchar(); while(!isdigit(ch)) ch=getchar(); while(isdigit(ch)){ x=x*10+ch-'0';
风骨散人Chiam
2020/10/28
3000
相关推荐
浅谈积性函数的线性筛法
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验