分治法求大数乘法的问题

boodweb 2002-08-21 05:18:22
用分治法求大数乘法时,若把两个3n位的数分成三分,如何用5次n位乘法求出结果?设两个数为A*10^2n+B*10^n+C和D*10^2n+E*10^n+F。
我觉得要六次啊:
AD*10^4n+((A-B)(E-D)+AD+BE)*10^3n+((A-C)(F-D)+AD+CF+BE)*10^2n+((B-C)(C-F)+BE+CF)*10^n+CF
...全文
113 点赞 收藏 9
写回复
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
liangbch 2002-10-08
to saint001:
是我没有看懂,还是你说错了,我怎么觉得你用了7次乘法。
AE+BD=(A+B)(D+E)-AD-BE (3次乘法)
BF+CE=(B+C)(E+F)-BE-CF (3次乘法)

AF+BE+CD=(A+B+C)(D+E+F)-(A+B)(D+E)-(B+C)(E+F)+2BE
中的 (A+B+C)(D+E+F)也是1次额外的乘法。
回复
saint001 2002-09-27
我也觉得是6次
(AXX+BX+C)(DXX+EX+F)
=ADXXXX+(AE+BD)XXX+(AF+BE+CD)XX+(BF+CE)X+CF
AE+BD=(A+B)(D+E)-AD-BE
BF+CE=(B+C)(E+F)-BE-CF
AF+BE+CD=(A+B+C)(D+E+F)-(A+B)(D+E)-(B+C)(E+F)+2BE
回复
liangbch 2002-09-10
to starfish:
希望得到使用 快速数论变换 求大数相乘的算法。
回复
boodweb 2002-09-09
To starfish:
你说的只是把整数分为两段,进行3次乘法,我现在要把整数分为3段,并且只进行5次乘法,是一道习题
回复
starfish 2002-09-09
设X=A2n/2+B ,Y=C2n/2+D
把X*Y改写成 XY=AC2n+[(A-B)(D-C)+AC+BD]2n/2+BD 进行计算
回复
starfish 2002-09-09
看看下面的网页
http://complexity.lzu.edu.cn/algorithm/technique/divide_and_conquer/chapter6_3.htm
回复
boodweb 2002-08-25
哦,还可以用FFT
但是我很想知道这个问题的答案啊
回复
boodweb 2002-08-24
有更好的方法?
回复
minkerui 2002-08-23
为什么要用分治算法呢?
回复
发动态
发帖子
数据结构与算法
创建于2007-08-27

3.2w+

社区成员

数据结构与算法相关内容讨论专区
申请成为版主
社区公告
暂无公告