- 3
- 0
- 约 12页
- 2017-02-08 发布于江苏
- 举报
大数乘法培训教案
BY WFSUN 数据结构与算法 For 软件学院09级本科生 2010-2011秋 大整数乘法,递归 孙伟峰 问题描述 计算机硬件所能表示的数字位数有限。在有些情况下,我们要处理很大的整数,它无法在计算机硬件能直接表示的范围内进行处理。 因此,需要有效的算法来实现大整数运算。 请设计一个有效的算法,可以进行两个任意位大整数的乘法运算。 注:这曾是某知名软件公司曾经频繁出现的面试题目 */12 大数乘法、递归 常用方法 循环法 特点:从笔算算法中提出,思想相对简单,但位数较大时,乘法次数多,效率较低 分治递归法 特点:采用分治递归思想,较常规方法复杂,但位数较大时,乘法次数少,效率相对高 注:有报告显示,从大于600位的整数开始,分治法的性能超越了笔算算法的性能. 如果我们使用类似Java、C++和Smalltalk这样的面向对象语言,会发现这些语言专门为处理大整数提供了一些类。 */12 大数乘法、递归 循环法 基本思想:将待相乘大整数存入字符串中,按位存入较大的数组,循环按位相乘并累加。最后将进位分离并加到相邻高位上。 (P87 最后一行?) 主要函数: GetDigits(int*a,char*s) 将字符串形式的数据按位存入整型数组中 Multiply(int *a,int *b,int *c) 按位实现乘法运算,将a*b的结果存入数组c中 */12 大数乘法、递归 主要函数示例 /*把字符串形式的数字按位存放到数组*/ void GetDigits(int *a, char *s) { int i; char digit; int len=strlen(s); for(i=0;iN;i++) //数组初始化 *(a+i)=0; for(i=0;ilen;i++) //分离各位 { digit=*(s+i); *(a+len-1-i) = digit - 0; } } */12 大数乘法、递归 主要函数示例 /*把a*b的结果存储到数组c中,按位表示*/ void multiply(int *a,int *b,int *c){????? int i,j;????? for(i=0;iN*2;i++) ?? ?? ?//先将结果数组设置为0????????? *(c+i)=0; ????? for(i=0;iN;i++) //逐位乘法的实现?????????? for(j=0;jN;j++)????????????????? *(c+i+j)+=*(a+i) * *(b+j); ????? for(i=0;iN*2-1;i++) ? ?// 处理进位????? {?????? ???? *(c+i+1)+=*(c+i)/10;?????? ?????????? *(c+i)=*(c+i)%10;???????? ? ????? }} */12 大数乘法、递归 分治递归法 基本思想: 设X和Y都是n位的二进制(注1)整数,现在要计算它们的乘积XY。 我们将n位的二进制整数X和Y各分为2段,每段的长为n/2位(注2),如图所示。 由此,X=A*2^n/2+B ,Y=C*2^n/2+D。这样,X和Y的乘积为: XY=(A*2^n/2+B)(C*2^n/2+D)=AC*2^n+(AD+CB)*2^n/2+BD?????(1) 注:1.十进制同,为方便取二进制介绍 2.为简单起见,假设n是2的幂 */12 大数乘法、递归 分治递归法 如果按式(1)计算XY 我们必须进行4次n/2位整数的乘法--AC,AD,BC和BD, 以及3次不超过n位的整数加法--分别对应于式(1)中的加号 此外还要做2次移位--分别对应于式(1)中乘2^n和乘2^n/2。 所有这些加法和移位共用O(n)步运算。 设T(n)是2个n位整数相乘所需的运算总数,则由式(1),我们有: ? ????????? ?????????????????????????????????????????? ? ??? ?????? (2) ? 由此可得T(n)=O(n2)。 */12 大数乘法、递归 分治递归法 要想改进算法的计算复杂性,必须减少乘法次数。为此我们把XY写成另一种形式:???XY=AC*2^n+[(A-B)(D-C)+AC+BD]2^n/2+BD??????????????????? (3)虽然,式(3)看起来比式(1
您可能关注的文档
- 大学英语语法之inversion培训教案.ppt
- 大学英语综合课程 BU writing and translation培训教案.ppt
- 大学英语趣味学单词培训教案.ppt
- 大学英语精读第一册Unit培训教案.ppt
- 大学计算机信息技术培训教案.ppt
- 大学计算机 数制机器转换培训教案.ppt
- 大学计算机基础 数制与编码培训教案.ppt
- 大学计算机 信息时代与计算机培训教案.ppt
- 大学英语精读电子教案U培训教案.ppt
- 大学计算机基础培训教案.ppt
- 2025-2026学年天津市和平区高三(上)期末数学试卷(含解析).pdf
- 2025-2026学年云南省楚雄州高三(上)期末数学试卷(含答案).pdf
- 2025-2026学年甘肃省天水市张家川实验中学高三(上)期末数学试卷(含答案).docx
- 2025-2026学年福建省厦门市松柏中学高二(上)期末数学试卷(含答案).docx
- 2025-2026学年广西钦州市高一(上)期末物理试卷(含答案).docx
- 2025-2026学年河北省邯郸市临漳县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省石家庄二十三中七年级(上)期末历史试卷(含答案).docx
- 2025-2026学年海南省五指山市九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省唐山市玉田县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省邢台市市区九年级(上)期末化学试卷(含答案).docx
最近下载
- 我们仨电子版.pdf VIP
- 妇幼保健院十五五发展规划.docx VIP
- 小学生必背古诗75首(打印版).pdf VIP
- 期末重难点检测卷(含解析)-2026年数学三年级下册北师大版.pdf VIP
- ZXK-7532数控立式钻铣床主运动、进给系统及控制系统的设计.doc VIP
- 2025至2030中国碳纤维复合材料在航空航天领域应用现状及投资机会报告.docx
- 雅马哈psre313使用说明书.pdf VIP
- 临床成人患者医用粘胶相关性皮肤损伤预防及护理-MARSI.pptx
- 电力行业深度:算力之争,电力为王,聚焦美国AI能源革命核心赛道.pptx VIP
- 房地产上市公司偿债能力分析【文献综述】.docx VIP
原创力文档

文档评论(0)