找回密码
 欢迎注册
楼主: northwolves

[原创] 关于a^n的计算

[复制链接]
发表于 2010-5-25 11:38:16 | 显示全部楼层
wikipedia说此题目前没有有效的方法:
http://en.wikipedia.org/wiki/Addition_chain


给一个图:
power.gif


更详细的信息:
http://wwwhomes.uni-bielefeld.de/achim/addition_chain.html
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-5-25 13:11:51 | 显示全部楼层
Found in http://wwwhomes.uni-bielefeld.de/achim/add_fun1.html

For n=375494703 holds: 34 = l(2n) < l(n) = 35.
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-5-25 13:33:07 | 显示全部楼层
22# northwolves
那是star chain,和这里讨论的是有区别的。
我们这里讨论的是shortest chain。
从网页信息里,可以看出,他自己也不能确定 l(375494703)=35。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-5-27 16:32:23 | 显示全部楼层
定义链的度信息为节点到数字1的距离
假设有两个数字x >y在链的相同分支上,则d(x + y) = d(x + 1)
否则,假设x > y且在不同分支上,分支点为z,则d(x + y) = d(x) + d(y) - d(z)
if n mod 2 = 0
   a = l(n / 2)
else
  a = l(n - 1) + 1
endif
b = a
for i = 1 to n / 2
   根据规则,从i, n - i计算d(n)
  if d(n) < b then  b = d(n) endif
endfor

输出b
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2014-12-24 21:34:18 | 显示全部楼层
将n转为2进制,去掉首位,剩余位数+剩余位数中1的个数即为求a^n所需的乘法次数。如a^10,10的二进制数为1010,len(010)+1=4次,即需做4次乘法。

评分

参与人数 1金币 +20 收起 理由
gxqcn + 20 首贴奖励,欢迎常来。

查看全部评分

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2014-12-25 19:07:47 | 显示全部楼层
aimisiyou 发表于 2014-12-24 21:34
将n转为2进制,去掉首位,剩余位数+剩余位数中1的个数即为求a^n所需的乘法次数。如a^10,10的二进制数为101 ...

看来我错了,采用二分法不正确,31只需7步,但len(1111)+4=8。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

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

GMT+8, 2024-4-19 11:35 , Processed in 0.043880 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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