大整数相乘相关资料.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
大整数相乘相关资料

大整数相乘相关资料 叠加法 叠加算法就是通用的笔算算法思想。在两个大整数相乘中,它用第一个数的每一位去乘第二个数的每一位,再把运算结果按权值叠加,进位处理后,得到所求的结果。具体描述如下文所示。 将因数和表示如下: , 则和可以记为: , 因此,大整数乘法的计算公式为: ………………………(2.1) 的结果称为部分积,将、称为部分因子。 根据公式(2.1)的部分积,同时完成它们之间的累加,然后再计算权值更高的部分积,依次类推,直到计算出所有的部分积。 图2.1中,是权值为的部分积的累加之和,其计算方法如公式(2.2)所示: ………………………(2.) 图2.1叠加法大整数乘法算法 根据图2.1所描述的算法思想,得到如下伪代码描述的算法: Function Mult(X, Y){ //X和Y是记录两个整数的数组,返回结果为X和Y的乘积XYFor (i = 1; i len(x);i++) //乘积叠加运算 For (j = 1;j len(y);j++) R(i+j-1) += X(i) * Y(j) For (i = 1 ;i len(x) + len(y);i++) R(i) 向R(i+1) 进位 Return R }// Mult 算法 2.1 由公式(2.1)得,叠加算法共做次乘法。由2.1.1节和图2.1知,该算法还需做次加法运算和次进位处理。在计算时间主要由乘法决定的情况下,它的时间复杂度为: ………………………………………………(2.3)和分别花费单元,存储积需要个单元,因此该算法的空间复杂度为: ………………………………………………(2.4) 分治法的设计思想是,将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。分治法所能解决的问题一般具有以下几个特征:(1)该问题的规模缩小到一定的程度就可以容易地解决;(2)该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质;(3)利用该问题分解出的子问题的解可以合并为该问题的解;(4)该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。?上述的第一条特征是绝大多数问题都可以满足的,因为问题的计算复杂性一般是随着问题规模的增加而增加;第二条特征是应用分治法的前提,它也是大多数问题可以满足的,此特征反映了递归思想的应用;第三条特征是关键,能否利用分治法完全取决于问题是否具有第三条特征,如果具备了第一条和第二条特征,而不具备第三条特征,则可以考虑贪心法或动态规划法。第四条特征涉及到分治法的效率,如果各子问题是不独立的,则分治法要做许多不必要的工作,重复地解公共的子问题分治法的基本步骤分治法在每一层递归上都有三个步骤: 图2.2 分治技术(典型实例) (1)分解:将原问题分解为若干个规模较小,相互独立,与原问题形式相同的子问题;(2)解决:若子问题规模较小而容易被解决则直接解,否则递归地解各个子问题;(3)合并:将各个子问题的解合并为原问题的解。它的一般的算法设计模式如下:Divide-and-Conquer(P)if |P|≤n0? then return(ADHOC(P)) 将P分解为较小的子问题P1、P2、…、Pk for i←1 to k?do? yi ← Divide-and-Conquer(Pi) 递归解决PiT ← MERGE(y1,y2,…,yk) 合并子问题 Return(T) 其中|P|表示问题P的规模;为一阈值,表示当问题P的规模不超过时,问题已容易解出,不必再继续分解。ADHOC(P)是该分治法中的基本子算法,用于直接解小规模的问题P。因此,当P的规模不超过时,直接用算法ADHOC(P)求解。 算法MERGE(y1,y2,…,yk)是该分治法中的合并子算法,用于将P的子问题P1、P2、…、Pk的相应的解y1、y2、…、yk合并为P的解。根据分治法的分割原则,原问题应该分为多少个子问题才较适宜?各个子问题的规模应该怎样才为适当?这些问题很难予以肯定的回答。但从大量实践中发现,在用分治法设计算法时,最好使子问题的规模大致相同。换句话说,将一个问题分成大小相等的k个子问题的处理方法是行之有效的。许多问题可以取k=2。这种使子问题规模大致相等的做法是出自一种平衡子问题的思想,它几乎总是比子问题规模不等的做法要好。分治法的合并步骤是算法的关键所在。有些问题的合并方法比较明显,有些问题合并方法比较复杂,或者是有多种合并方案;或者是合并方案不明显。究竟应该怎样合并,没有统一的模式,需要具体问题具体分析。位数的大整数,将需要做次乘法运算。似乎不可能有一种算法能使乘法运算次数少于,但事实证明并非如此。分治法就是一个明显的例子。 设和都是位的进制整数,现在要计算它们

文档评论(0)

asd522513656 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档