转自mbxc816 欧拉函数递推

欧拉函数(详解)-数论 欧拉函数:对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目。例如euler(8)=4,因为1,3,5,7均和8互质。 Euler函数表达通式:euler(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…(1-1/pn),其中p1,p2……pn为x的所有素因数,x是不为0的整数。euler(1)=1(唯一和1互质的数就是1本身)。 欧拉公式的延伸:一个数的所有质因子之和是euler(n)*n/2。 欧拉定理:对于互质的正整数a和n,有aφ(n) ≡ 1 mod n。 欧拉函 阅读详情

欧拉函数的定义:E(k)=([1,n-1]中与n互质的整数个数).

 因为任意正整数都可以唯一表示成如下形式:
                 k=p1^a1*p2^a2*……*pi^ai;(即分解质因数形式)
可以推出:E(k)=(p1-1)(p2-1)……(pi-1)*(p1^(a1-1))(p2^(a2-1))……(pi^(ai-1))
           =k*(p1-1)(p2-1)……(pi-1)/(p1*p2*……pi);
           =k*(1-1/p1)*(1-1/p2)....(1-1/pk)
 ps:在程序中利用欧拉函数如下性质,可以快速求出欧拉函数的值(a为N的质因素)

若(N%a==0 && (N/a)%a==0) 则有:E(N)=E(N/a)*a;
若(N%a==0 && (N/a)%a!=0) 则有:E(N)=E(N/a)*(a-1);
http://hi.baidu.com/ldante/blog/item/996b0ea131a7a58f46106443.html
第一次写欧拉函数的题,琢磨的半天,最后还是只能按照最开始的想法写……
欧拉函数PHI(n)表示的是比n小,并且与n互质的正整数的个数(包括1)。比如:
PHI(1) = 1; PHI(2) = 1; PHI(3) = 2; PHI(4) = 2; … PHI(9) = 6; …

要计算一个正整数n的欧拉函数的方法如下:
1. 将n表示成素数的乘积: n = p1 ^ k1 * p2 ^ k2 * … * pn ^ kn(这里p1, p2, …, pn是素数)
2. PHI(n) = (p1 ^ k1 - p1 ^ (k1 - 1)) * (p2 ^ k2 - p2 ^ (k2 - 1)) * … *(pn ^ kn - pn ^ (kn - 1))
= Mult { pi ^ ki - pi ^ (ki -1) }

证明过程如下:
1. 容易想到:当n为素数时,PHI(n) = n - 1。因为每个比n小的正整数都和n互素。当n为素数p的k次方时,PHI(n) = p ^ k - p ^ (k - 1)。因为在1到n之间的正整数只有p的倍数和n不互素,这样的数有(p ^ k / p)个。
2. 如果m和n互素,即GCD(m, n) = 1,那么PHI(m * n) = PHI(m) * PHI(n)。用中国剩余定理可以证明,证明的思路是建立这样一种一一对应的关系(a, b) <-> x,其中正整数a小于m并且gcd(a, m) = 1,正整数b小于n并且gcd(b, n) = 1,正整数x小于m*n并且gcd(m*n, x) = 1。证明过程如下:
1)根据中国剩余定理,如果m和n互素,那么关于未知量x的方程组x % m = a, x % n = b(0 <= a < m, 0 <= b < n),当0 <= x < m * n时存在并且仅存在一个解。容易证明,如果两个这样的方程组有相同的m, n但是a, b不同,那么他们的解x一定不同。
2)首先用反正法证明:gcd(m, a) = 1且gcd(n, b) = 1是gcd(m*n, x) = 1的必要条件:假设gcd(a, m) = k > 1,由此可得:a = a’ * k; m = m’ * k => x = k’ * m + a = k’ * k * m’ + k * a’ = k * (k’ * m’ + a’); 所以gcd(x, m) = k > 1。同理可证,如果gcd(b, n) > 1, 那么gcd(x, n) > 1。所以x和m * n互素的必要条件是a和m互诉且b和n互素。
3)接下来我们证明充分性:由x % m = a 可以得到x = k * m + a;由欧几里德算法求最大公约数的过程(就不证明了,呵呵,还得想)可以知道gcd(x, m) = gcd(m, a) = 1;同理可得,如果gcd(n, b) = 1那么gcd(x, n) = 1。接下来很容易得到:gcd(m*n, x) = 1。从而证明了充分性。
4)上面三步的结论表明,数对(a, b)是可以和x建立起一一对应的关系的,所以有多少个不同的(a, b),就有多少个不同的x。
3.将n分解成素数乘积后,显然对于任意的i, j(i != j)都满足 pi ^ ki和pj ^ kj是互素的,于是可以的到上面的公式。

跟据上面的公式,可以得到关于欧拉函数的递推关系:
假设素数p能整除n,那么
如果p还能整除n / p, PHI(n) = PHI(n / p) * p;
如果p不能整除n / p, PHI(n) = PHI(n / p) * (p - 1);

下面是两种求欧拉函数的不同编程方法:
/==================================================\
|递推求欧拉函数phi(i)
*==================================================*/
for (i = 1; i <= maxn; i++) phi[i] = i;
for (i = 2; i <= maxn; i += 2) phi[i] /= 2;
for (i = 3; i <= maxn; i += 2) if(phi[i] == i) {
for (j = i; j <= maxn; j += i)
phi[j] = phi[j] / i * (i - 1);

/==================================================\
|单独求欧拉函数phi(x)
*==================================================*/
unsigned euler(unsigned x)
{// 就是公式
unsigned i, res=x;
for (i = 2; i < (int)sqrt(x * 1.0) + 1; i++)
if(x%i==0) {
res = res / i * (i - 1);
while (x % i == 0) x /= i; // 保证i一定是素数
}
if (x > 1) res = res / x * (x - 1);
return res;
}

欧拉函数公式以及证明 欧拉函数 : 欧拉函数是数论中很重要的一个函数,欧拉函数是指:对于一个正整数 n ,小于 n 且和 n 互质的正整数(包括 1)的个数,记作 φ(n) 。 完全余数集合: 定义小于 n 且和 n 互质的数构成的集合为 Zn ,称呼这个集合为 n 的完全余数集合。 显然 |Zn| =φ(n) 。 有关性质: 对于素数 p ,φ(p) = p -1 。 对于两个不同素数 p, q ,它们的乘积 n = p * q 满足 φ(n) = (p -1) * (q -1) 。 这是因为 Zn = {1, 2, 3, ... , n - 1} - {p, 2p, ... , (q - 1) * p} - {q, 2q, ... , (p - 1) * q} , 则 φ(n) = (n - 1) - (q - 1) - (p - 1) = (p -1) * (q -1) =φ(p) * φ(q) 。 欧拉定理 : 对于互质的正整数 a 和 n ,有 aφ(n) ≡ 1 mod n 。 证明: ( 1 ) 令 Zn = {x1, x2, ..., xφ(n)} , S = {a * x1 mod n, a * x2 mod n, ... , a * xφ(n) mod n} , 则 Zn = S 。 ① 因为 a 与 n 互质, xi (1 ≤ i ≤ φ(n)) 与 n 互质, 所以 a * xi 与 n 互质,所以 a * xi mod n ∈ Zn 。 ② 若 i ≠ j , 那么 xi ≠ xj,且由 a, n互质可得 a * xi mod n ≠ a * xj mod n (消去律)。 立即下载

相关推荐

高斯-约当(Gauss-Jordan)消元法——c++代码实现

具体算法的详细原理请参照此篇博客:高斯-约当(Gauss-Jordan)消元法下面是具体c++代码,不保证程序最优化,提供一个可行的程序,供大家改进,同时感谢大家提意见。——大神勿喷呀,我是一个小菜鸟~void Guss_Jordan(int n,double *a)//阶数n 系数矩阵a { double*a_temp = new double[n*n * 2];//a与单位矩阵的组合

zwz的学习之路 6873

欧拉函数(新)

欧拉函数φ的定义,φi表示从1i之间和i互质的数的数量 (a和b互质即gcdab1欧拉函数是积性函数,例如ab都为质数,那么φabφa×φb,递推式为φabφgcdab))φa×φb×gcdab​(证明暂时搁置)设一个数N可得Np1b1​​×p2b2​​×p3b3​​××pkbk​​p为质数因为还因为1pb一共有pb个数,不和pb互质的数有。

blind5883的博客 455

单细胞数据导入实战:Read10X函数常见报错与解决方案

本文针对单细胞转录组分析中Read10X函数数据导入的常见问题,提供了详细的实战解决方案。重点解析了因文件路径错误、压缩文件未解压、版本命名不符及内存不足导致的报错,并给出了检查路径、正确解压、重命名文件、调整参数及优化内存等具体操作步骤,帮助用户高效完成单细胞数据导入,为后续分析奠定坚实基础。

weixin_28235513的博客 237

欧拉函数的推导过程(简单向)

给定任意正整数X,求小于或等于X的正整数中,与X互质的数的个数,而求这些个数的方法即为欧拉函数。设φ(n)为欧拉函数,则其公式为:n可以用若干个质数的幂相乘表示,而X则为质数。

2302_79027886的博客 1864

HCLR-Net: 混合对比学习正则化与局部随机扰动用于水下图像增强

独特贡献在于开发了一种处理负样本的新策略,既保留了负样本的统计特性,又防止网络过度剖析这些样本中的特征信息。通过根据每个通道特征的重要性对模型进行加权,我们可以增强富含上下文信息的通道,从而获得更准确、更详细的特征表示。AHA 模块利用垂直方向上的 Avgpool 和水平方向上的 Maxpool 来捕捉远程依赖关系和准确的位置信息,从而有效确定不同方向上的特征退化。对比学习策略通常旨在最小化正样本之间的欧氏距离,使预测图像更接近理想图像,同时最大化负样本与预测图像之间的距离,使它们进一步远离非理想表征。

G-Howe的博客 1456

FOC实战笔记:RC吸收电路的设计考量与参数调优

本文深入探讨了FOC驱动器中RC吸收电路的设计与调优。针对MOS管开关过程中的电压尖峰问题,详细阐述了RC电路的钳位与能量吸收原理,并提供了从参数计算、实验调试到布局布线的完整实战指南,旨在帮助工程师有效提升系统可靠性与稳定性。

weixin_29219539的博客 273

欧拉函数的递推形式

View Code  1 #include  2 int main() 3 { 4 int n; 5 scanf("%d",&n); 6 int* a=new int[n+1]; 7 for (int i = 1; i  8 for (int i = 2; i 2) a[i] /= 2; 9 for (int i = 3; i 2) 10 if(a[i] == i) 11 {12 for (int

无奈滴微笑 1539

Android 13 GMS认证避坑:手把手教你搞定RKP配置,解决GTS测试fail

本文详细解析Android 13 GMS认证中的RKP(远程密钥配置)全流程,提供GTS测试失败的深度解决方案。从RKP核心概念到实战配置技巧,帮助开发者规避常见陷阱,确保设备顺利通过Google安全认证,特别适合需要快速掌握Android13 GMS认证的工程师参考。

weixin_29796279的博客 464

欧拉函数(转)

对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目。例如euler(8)=4,因为1,3,5,7均和8互质。 Euler函数表达通式:euler(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…(1-1/pn),其中p1,p2……pn为x的所有素因数,x是不为0的整数。euler(1)=1(唯一和1互质的数就是1本身)。 欧拉公式的延伸:一个数的所有质因子之和

long-long-ago 532

SRCNN超分辨率Pytorch实现,代码逐行讲解,附源码

超分辨率,就是把低分辨率(LR, Low Resolution)图片放大为高分辨率(HR, High Resolution)的过程。通过CNN将图像Y 的特征提取出来存到向量中。用一层的CNN以及ReLU去将图像Y 变成一堆堆向量,即feature map。把提取到的特征进一步做非线性映射,加大网络深度,提高网络复杂性。结合了前面得到的补丁来产生最终的高分辨率图像。实验步骤。

weixin_52261094的博客 3万+

保姆级图解:HKMG工艺中的‘覆盖层’(Cap Layer)到底怎么调阈值电压?

本文深入解析了HKMG工艺中覆盖层(Cap Layer)如何精准调控阈值电压的关键技术。通过原子级精度的ALD工艺和材料选择,覆盖层在半导体制造中扮演着隐形调节器的角色,直接影响晶体管的电气特性。文章详细介绍了La2O3和Al2O3等材料的特性对比、ALD工艺的原子级控制,以及实战调试中的关键步骤和问题排查方法。

weixin_27032989的博客 496

【数论】欧拉函数(基本性质、递推法、公式法、线性筛法)

数论,欧拉函数,包括基本性质,求解方法:递推法、分解质因数法、公式求单个欧拉函数、线性筛法

default111的博客 2041

从零到一:使用阿里云百炼搭建企业级 AI Agent 完全实战手册(2026超详细版)

本文是一份企业级AI Agent构建手册,主要面向企业技术负责人、AI产品经理和后端开发工程师。手册详细介绍了如何在阿里云百炼平台上搭建企业智能体应用的全流程,包括环境准备、知识库构建、智能体创建、工具集成、工作流编排等核心环节。重点内容包括: 准备工作:阿里云账号注册、百炼服务开通、免费额度领取、API Key管理 知识库构建:文档格式要求、内容优化原则、RAG系统搭建 智能体开发:Agent创建、工具集成、复杂业务工作流设计 生产部署:多渠道接入、监控运维、安全治理 成本控制:Token预算管理、选型决

u010323587的专栏 1079

【POJ2478】Farey Sequence——欧拉数

Farey Sequence Time Limit: 1000MS Memory Limit: 65536KDescriptionThe Farey Sequence Fn for any integer n with n >= 2 is the set of irreducible rational numbers a/b with 0 < a < b <= n and gcd(a,b)

绝尘 783

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

欧拉函数与欧拉函数的递推总结+例题POJ2478

先来介绍几个与欧拉函数有关的定理: 定理一:设m与n是互素的正整数,那么 定理二:当n为奇数时,有。 因为2n是偶数,偶数与偶数一定不互素,所以只考虑2n与小于它的奇数互素的情况,则恰好就等于n的欧拉函数值。 定理三:设p是素数,a是一个正整数,那么 关于这个定理的证明用到容斥: 由于表示小于与互素数的正整数个数,

HengTian_real的博客 1374

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

欧拉函数

递推求欧拉函数phi(i): for(i=1;i<=maxn;i++) phi[i]=i; for(i=2;i<=maxn;i+=2) phi[i]/=2; for(i=3;i<=maxn;i+=2) if(phi[i]==i) { for(j=i;j<=maxn;j+=i) { phi[j]=phi[j]/i*(i-1); }...

weixin_30342827的博客 96

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

数论之欧拉函数

定义:欧拉函数φ(n),表示小于或等于n的数中与n互质的数的数目。 性质: 1) φ(1) = 1 2) 若n是质数p的k次幂,φ(n) = (p - 1)^(k - 1) 3) 若m, n互质,φ(m*n) = φ(m) * φ(n)

fuyukai的专栏 1528

poj2478

Farey Sequence Description The Farey Sequence Fn for any integer n with n >= 2 is the set of irreducible rational numbers a/b with 0 F2 = {1/2}  F3 = {1/3, 1/2, 2/3}  F4 = {1/4, 1/3, 1/2, 2/

◆◇丶生如夏花。谁来订阅我的悲伤 700

【poj2478-Farey Sequence】递推求欧拉函数-欧拉函数的几个性质和推论

【poj2478-Farey Sequence】递推求欧拉函数-欧拉函数的几个性质和推论 http://poj.org/problem?id=2478 题意:给定一个数x,求&lt;=x的数的欧拉函数值的和。(x&lt;=10^6) 题解:数据范围比较大,像poj1248一样的做法是不可行的了。 首先我们要了解欧拉函数的几个性质和推论:(今天...

qq_25768269的博客 263

关于欧拉函数的递推方法的证明

首先什么是欧拉函数呢? 欧拉函数phi(n)就表示1-n中与n互质的数的个数 设Xi为1-n中与n互质的数(一共有phi(n)个) 那么我们可以知道phi(2) = 1 , phi(3) = 2.......,我们也可以通过如下的递推式获得更大的欧拉函数的值 对于任意一个能被n整除的质数,有m = n/p 当m%p == 0 的时候,phi(n) = phi(m)*p 当m%p !=

llin-黎辰 4302

欧拉函数递推公式证明

欧拉函数递推公式证明 欧拉函数表示的是1到当中与互质的数的个数。 假设,(为的随机1个质因子) 当时, 当不能整除时, 根据质因数分解定理,至少可以分解出一个素数,使得。 我们可以将1到n...

qq_36679229的博客 1378

欧拉函数及其求法

欧拉函数:对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目。例如euler(8)=4,因为1,3,5,7均和8互质。 Euler函数表达通式:euler(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…(1-1/pn),其中p1,p2……pn为x的所有素因数,x是不为0的整数。euler(1)=1(唯一和1互质的数就是1本身)。 欧拉公式

syxEzre的专栏 5576

2478 Farey Sequence 求欧拉函数,利用递推公式

Farey SequenceTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 6416 Accepted: 2316<br />DescriptionThe Farey Sequence Fn for any integer n with n >= 2 is the set of irreducible rational numbers a/b with 0 < a < b <= n and gcd(a,b) = 1 arranged in

kongming_acm的专栏 681

欧拉函数广义降幂

https://www.luogu.org/problem/P5091 #include<stdio.h> #include<iostream> #include<algorithm> #include<string.h> #include<vector> #include<cmath> #includ...

小糊涂的博客 440

UVA 11426 欧拉函数 + 递推

codeimport java.util.*; import static java.lang.System.*; public class Main{ static final int N = 4100000; /**static long c;*/ static long[] phi = new long[N]; static long[] f = new long

退役ACMer 612
上一篇: 关于线段树的作用与其他数据结构的替代
下一篇: 乘法逆元
RustSword_RWZ
博客等级 码龄10年 6粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值