| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 434 人关注过本帖
标题:大数相乘的个人想法介绍
取消只看楼主 加入收藏
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
结帖率:59.52%
收藏
 问题点数:0 回复次数:0 
大数相乘的个人想法介绍
大数相乘实现算法的相关想法 有容老兄要来哟!!!!

采用分治算法实现  包括两部分的分解
乘数和被乘数 的分解
设 乘数a是由数字集合a={a1,a2,a3...........an}   n代表的是a数的位数大于0的正整数 用 a=f(1,n)
设被乘数b是由数字集合b={b1,b2,b3..........bx}   x代表的是b数的位数大于0的正整数    b=f(1,x)

被乘数的分解算法
第一次分解 :
分解结果为:
lift={b1.........bx/2}
right={b(x/2+1).......bx}
用函数表达式   lift=F(1,b/2) ,right=F(x/2+1,x) 表示  n
那么 被乘数  a=lift*10^(x-x/2-1)+right
由乘法规则  (a+b)*c=a*c+b*c的 可以得到
a*b=a* lift*10^(x-x/2-1)+b*right 的表达式    的合并过程
下面怎么推算我就不推了  直接给通项表达式 设b=f(x,y)  则有 right=f(x,(x+y)/2)  lift=f((x+y)/2+1,y)
f(x,y)=(right*10^(y-(x+y)/2-1)+right)*a  合并算法
存在
c 程序的代码段就为
乘数
fenjie(int num,int x, int y)
{
int q
q=(x+y)/2
while(q<y)
{
fenjie (int num,int x,int (x+y)/2)
fenjie(int num,int (x+y)/2+1,int y)
}
合并代码位置
代码完成功能     f(x,y)=(right*10^(y-(x+y)/2-1)+right)*a  的计算
这个是被乘数  
还得对a*F(X,Y)进行求解    再对a进行分解 变成 a的单个数位置上的与D(X,Y) 的分解合并求解过程,这个过程和上面的 代码是差不多的 嘿嘿
}
呵呵 算法描述完毕
搜索更多相关主题的帖子: 正整数 表达式 
2012-10-03 13:28
快速回复:大数相乘的个人想法介绍
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033073 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved