题解 | #完全数计算#由一次错误 的回答推导欧拉公式

完全数计算

http://www.nowcoder.com/practice/7299c12e6abb437c87ad3e712383ff84

alt alt

本来是遍历到根号n,后来想改进到再去除2的倍数 alt

验证 6因子 1,6 2,3

那么12因子 (1,12 2,6) (2,6 4,3) 这样因子和是3倍

但是12因子 1,12 2,6 3,4 那么2,6重复了

结论错误

为什么? 猜测可能是因为6是2的倍数所以会再翻倍时导致因子有重复

a不是2的倍数

a因子 1,a x1,y1 x2,y2

2a因子 (1,2a 2,a) (x1,2y1 and 2x1,y1)...

2a因子和是a的3倍,但是没什么用因为得不到4a因子和是2a三倍

顺着欧拉思路是不是需要a为质数 alt

所以对素数p 2np=(p+1)(2n+11)2^n*p 的因子和= (p+1)(2^{n+1}-1)

2np2^n*p是完全数=> 2np=(p+1)(2n+11)2np2^n*p= (p+1)(2^{n+1}-1)-2^n*p

(2n+1)p=(p+1)(2n+11)(2^{n+1})*p= (p+1)(2^{n+1}-1)

a/b a整除b (a,b)=1 a,b最大公约数为1,ab互质

p+1/(2n+1)p,(p,p+1)=1p+1/(2^{n+1})*p,且 (p,p+1)=1 =>

p+1/2n+1p+1/2^{n+1} *****

p=2kt(t<2k1)2n+1=>2kt+1=>t=1=>p=2k1设 p= 2^k-t(t<2^{k-1})显然2^{n+1}没有奇因子=>2^k-t+1 没有奇因子=>t=1=>p= 2^k-1

=> (2n+1)(2k1)=(2k)(2n+11)(2^{n+1})*(2^k-1)=(2^k)(2^{n+1}-1)

=>n=k-1结合2np2^n*p 是完全数

k2k1=p2np有存在k 当2^k-1=p 为质数时 2^n*p为完全数

(2k1)(2k1)也即 (2^k-1)*(2^{k-1})为完全数

对比欧拉结论

p2p1,2p1)2(p1)便如果p是质数,且2^p-1也是质数,(2^p-1)*2^{(p-1)}便是一个完全数。

2p1,p下证若要2^p-1也是质数,p需为质数

alt

全部评论
这个故事告诉我们当程序员的数学功底强的时候可以省多少事情……
2 回复 分享
发布于 2022-05-25 12:18
原来有点懵的看完直接云里雾里
点赞 回复 分享
发布于 2022-02-12 16:31

相关推荐

今天 11:23
重庆邮电大学 C++
点赞 评论 收藏
分享
爱看电影的杨桃allin春招:我感觉你在炫耀
点赞 评论 收藏
分享
最近和朋友聊天,她说了句让我震惊的话:"我发现我连周末点外卖都开始'最优解'了,一定要赶在高峰期前下单,不然就觉得自己亏了。"这不就是典型的"班味入侵"吗?工作思维已经渗透到生活的方方面面。
小型域名服务器:啊?我一直都这样啊?我还以为是我爱贪小便宜呢?每次去实验室都得接一杯免费的开水回去,出门都得规划一下最短路径,在宿舍就吃南边的食堂,在实验室就吃北边的食堂,快递只有顺路的时候才取。
点赞 评论 收藏
分享
2 2 评论
分享
牛客网
牛客企业服务