大整数乘法程序分析

大整数乘法程序分析

ID:18693278

大小:475.00 KB

页数:9页

时间:2018-09-21

大整数乘法程序分析_第1页
大整数乘法程序分析_第2页
大整数乘法程序分析_第3页
大整数乘法程序分析_第4页
大整数乘法程序分析_第5页
资源描述:

《大整数乘法程序分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、大整数乘法程序分析161120114汪圆圆161120116刘程161120115张健161120113王星宇数据结构用string类型存储大整数和大整数的乘积,string是C++自带的一个类,为字符串类型,因为字符串类型方便对大整数进行分段,前加0和后加0操作。在进行运算时,把字符串换成数字进行运算。运算结果截图:大整数为2位时:大整数为5位时:大整数为10位时:大整数为100位时:大整数为200位时:大整数为300位时:大整数为600位时:大整数为1000位时:算法复杂性通常,在分析算法的计算复杂性时,都将加法和

2、乘法运算当作基本运算来处理,即将执行一次加法或乘法运算所需的计算时间,当作一个仅取决于计算机硬件处理速度的常数。这个假定仅在参加运算的整数能在计算机硬件对整数的表示范围内直接处理才是合理的。然而,在某些情况下,要处理很大的整数,它无法在计算机硬件能直接表示的整数范围内进行处理。若用浮点数来表示它,则只能近似的表示它的大小,计算结果中的有效数字也受到限制。若要精确地表示大整数并在计算结果中要求精确地得到所有位数上的数字,就必须用软件的方法来实现大整数的算术运算。设X和Y都是n位的二进制整数,现在要计算它们的乘积Z。可以用

3、小学所学的方法来设计计算乘积XY的算法,但是这样做计算步骤太多,效率较低。如果将每2个1位数的乘法或加法看作一步运算,那么这种方法要进行O(n^2)步运算才能算出乘积XY。下面用分治法来设计更有效额大整数乘积算法。将n位二进制数X和Y都分为两段,每段长n/2位(为简单起见,假设n是2的幂)。则有:其中X1、Xo分别为X的高位和低位,Y1、Yo分别为Y的高位和低位。C2是它们的前半部分的积;Co是它们后半部分的积;C1是X、Y两部分的和的积减去C2与C0的积。如果n/2也是偶数,我们可以利用相同的方法来计算C2、Co的和

4、C1。因此我们就得到了一个计算n位数积的递归算法:在这种完美的形式下,当n变成1时,递归就停止了.或者当我们认为n已经够小了,小到可以直接对这样大小的数相乘时,递归就可以停止了.该算法会有多少次位乘呢?因为n位数的乘法需要对n/2位数做三次乘法运算,乘法次数M(n)的递推式将会是:当n>1时,M(n)=3M(n/2),M(1)=1当n=2^k时,我们可以用反向替换法对它求解:因为

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。