Euler's Totient Function φ(n): Counting Primes & Residue Systems

需积分: 10 1 下载量 51 浏览量 更新于2024-09-06 收藏 200KB PDF 举报
Euler totient函数φ(n),在数学中被简称为欧拉函数,是一个重要的数论概念,其定义在OEIS(Online Encyclopedia of Integer Sequences)中的编号为A000010。这个函数的基本任务是计算不大于n的所有整数中,与n互质(即除1和n本身外没有其他公因数)的数目。换句话说,φ(n)给出了在模n下,所有单位元(即逆元)的集合大小,它们在环Z/nZ中的数量。 φ(n)与许多数学对象密切相关: 1. 剩余类系统:它表示的是模n的剩余类的个数,这些类中每个元素都是与n互质的。 2. 循环多项式:φ(n)也是n-th阶循环多项式的次数,这是指次数最小的多项式,其根包含所有n的原始根,即满足x^n-1=0且x不是n的幂次的复数根。 3. 群论中的生成元:φ(n)给出了一个阶为n的循环群(群中元素的乘积形成一个循环)的唯一生成元的数量。原始n-th根相当于该群的一个生成元。 4. 狄利克雷字符:在数论中的复分析中,φ(n)也对应着模n的复数狄利克雷字符的数量。这些字符是复函数,它们在处理模形式和L-函数时扮演关键角色。 5. 渐近行为:有趣的是,当n趋向无穷大时,φ(n)的增长速度与π²有密切关系。具体来说,对于足够大的n,φ(n)的值大致上等于(3/π²) * n²,这反映了素数分布对欧拉函数的影响。 Euler totient函数φ(n)在密码学、数论和组合数学中有广泛应用,特别是在RSA公钥加密算法中,它用于确定密钥参数的选择。理解并计算φ(n)对于许多理论问题和实际问题解决都至关重要,比如确定一个数是否为质数或者寻找特定类型的数论结构。因此,掌握欧拉函数及其性质对于研究者和实践者来说都是非常基础且实用的知识。
2023-05-28 上传

from gmpy2 import invert# 欧几里得算法def egcd(a, b): if a == 0: return (b, 0, 1) else: g, y, x = egcd(b % a, a) return (g, x - (b // a) * y, y)def main(): n = 22708078815885011462462049064339185898712439277226831073457888403129378547350292420267016551819052430779004755846649044001024141485283286483130702616057274698473611149508798869706347501931583117632710700787228016480127677393649929530416598686027354216422565934459015161927613607902831542857977859612596282353679327773303727004407262197231586324599181983572622404590354084541788062262164510140605868122410388090174420147752408554129789760902300898046273909007852818474030770699647647363015102118956737673941354217692696044969695308506436573142565573487583507037356944848039864382339216266670673567488871508925311154801 c1 = 22322035275663237041646893770451933509324701913484303338076210603542612758956262869640822486470121149424485571361007421293675516338822195280313794991136048140918842471219840263536338886250492682739436410013436651161720725855484866690084788721349555662019879081501113222996123305533009325964377798892703161521852805956811219563883312896330156298621674684353919547558127920925706842808914762199011054955816534977675267395009575347820387073483928425066536361482774892370969520740304287456555508933372782327506569010772537497541764311429052216291198932092617792645253901478910801592878203564861118912045464959832566051361 c2 = 18702010045187015556548691642394982835669262147230212731309938675226458555210425972429418449273410535387985931036711854265623905066805665751803269106880746769003478900791099590239513925449748814075904017471585572848473556490565450062664706449128415834787961947266259789785962922238701134079720414228414066193071495304612341052987455615930023536823801499269773357186087452747500840640419365011554421183037505653461286732740983702740822671148045619497667184586123657285604061875653909567822328914065337797733444640351518775487649819978262363617265797982843179630888729407238496650987720428708217115257989007867331698397 e1 = 11187289 e2 = 9647291 s = egcd(e1, e2) s1 = s[1] s2 = s[2] # 求模反元素 if s1<0: s1 = - s1 c1 = invert(c1, n) elif s2<0: s2 = - s2 c2 = invert(c2, n) m = pow(c1,s1,n)*pow(c2,s2,n) % n print (libnum.n2s(m))if __name__ == '__main__': main()

2025-03-11 上传
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部