找回密码
 欢迎注册
查看: 92883|回复: 80

[讨论] 埃及分数问题

[复制链接]
发表于 2008-3-6 21:16:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
精华
分子为1的分数叫埃及分数

假设有16个不同的埃及分数,分母范围是2-256
如果这16个不同的埃及分数恰好等于1,叫得到一个解

现在求所有满足分母范围是2-256, 且16个不同的埃及分数和恰好为1的全部分母组合的解

已添加到A144063
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-3-6 23:55:51 | 显示全部楼层
解的个数与计算精度有关。如:
1/2+1/3+1/9+1/157+1/219+1/233+1/238+1/241+1/242+1/247+1/249+1/250+1/251+1/252+1/255+1/256= 0.999999999999554
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-3-7 08:38:55 | 显示全部楼层
当然要精确等于1了。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-3-7 09:12:37 | 显示全部楼层
精度必须绝对精确
相差1/(256!)^1024都是不可原谅的  
实际也差不了这么多
但必须保证100%精确运算
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-3-7 09:57:25 | 显示全部楼层
计算精度是小问题,比如我们可以开始只使用double精度的进行计算,在结果同1误差不大于一定范围以内的数据都认为是候选数就可以了。然后对于每个候选结果,在进行一次高精度计算验证就可以了。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-3-7 10:10:57 | 显示全部楼层
哈哈

3天后公布做法
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-3-7 11:27:02 | 显示全部楼层
其实主要就是搜索算法怎么实现的有效一些。
northwolves应该已经有个不错的搜索算法。
至于对于近似解,判断是否是真正的正确解,可以在搜索出来的近似解中再次使用同余方程快速判断一下。
比如对于
1/u1+1/u2+...+1/u16
我们可以取一些素数(比如257,263等)
分别计算u1,u2,...,u16关于这些素数的素论倒数,然后在计算和,看看是否同余于1就可以了。
只要多使用几个素数,那么判断出错的概率已经非常小了。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-3-7 11:29:45 | 显示全部楼层
穷举的次数考虑了么?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-3-7 12:44:39 | 显示全部楼层
搜索不等同于去穷举。
实际上对于这个题目,搜索解的过程中,有很多技巧可以用。
i)我们可以用部分和进行剪枝:
比如搜索过程中前面两个数分别选择了1/2+1/3,那么第三个数必然小于1/6,我们可以从1/7开始,同样,如果第三个数选择了1/7,那么第四个数必然小于1/42,我们可以从1/43开始等等。
同样,如果我们发现当前搜索过程导致将所有余下数中最大的若干个添加进去都达不大1,那么自然也可以停止搜索。
对于这个部分,我们可以事先计算好数组max_sum[key][num]
保存所有分母不小key的情况下,num个数字和的最大值。
另外还可以事先计算min_sum[num],保存num个数字和的最小值,如果已经添加了16-num个数字,和超过了1-min_sum[num],那么也可以裁减掉。
ii)我们可以事先过虑掉一些不可能的情况,从而提高搜索效率。
比如很显然,所有大于128的素数的倒数不可能参与,可以事先淘汰掉,不参与搜索。
更加进一步分析,可以发现所有分母包含大于85的素因子的数都不能够参与。
进一步分析应该还可以过虑掉更多素因子。
iii)对于部分大素数,还有一些限制可以使用,比如对于某个较大的素数p
在256之内,可以参与的p的倍数对应的项有$1/p,1/(2p),...,1/(kp)$等
对于p比较大时,k会比较小,那么对于$k!(x_1/p+x_2/(2p)+...+x_k/(kp))$其中$x_1,x_2,...,x_k$分别为0和1
我们只关心这一项是整数的情况,上面总共有$2^k$种情况,但是整数的情况比例会比较低(大概$1/p$),在k不是特别大时,我们通过这种方法可以得到一些比较有用的模板,对于所有分母为p的倍数的情况,总共就只能几个模板情况可用。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-3-7 12:54:40 | 显示全部楼层
呵呵,做过这个题目,不过范围没这么大。楼主这个范围,解的个数可能比较惊人。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-3-19 11:34 , Processed in 0.047806 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表