大数相乘算法的发展概述.doc

资料分类:精选论文 上传会员:螺蛳粉50g 更新时间:2024-01-21
需要金币1000 个金币 资料包括:完整论文 下载论文
转换比率:金额 X 10=金币数量, 例100元=1000金币 论文字数:12926
折扣与优惠:团购最低可5折优惠 - 了解详情 论文格式:Word格式(*.doc)

摘要:乘法一直是人类科学发展过程中非常重要的运算工具,许多科学问题的解决都依赖于准确、快速的大整数乘法运算。本文介绍了几类在不同阶段具有代表性的大数相乘算法,具体包括:

(1)竖式计算乘法:这是最早提出的乘法计算方式,形式上类似于人的笔算,时间复杂度为,当问题规模增大时计算所需要的时间会急剧增加,因此该算法不适用于大数相乘的场合。

(2)Karatsuba乘法:这是对两数乘法运算的第一次改进。算法运用分治的思想,分别将乘数和被乘数均分为两段,以少量的加法运算来替代部分乘法运算,时间复杂度为。

(3)多项式乘法:该算法基于快速傅里叶变换(FFT),首先将乘数和被乘数转换为两个多项式的系数向量,然后用FFT计算两个系数向量的卷积,之后对应相乘,再通过IFFT得到最终结果。算法的时间复杂度为,计算速度得到了进一步的提高。

(4)David Harvey–Joris van der Hoeven算法:该算法同样基于快速傅里叶变换,将乘数和被乘数变换到某个多元多项式环上进行相乘,在该多元多项式环中存在特别有效的乘法算法,使得两数相乘所消耗的时间较之于FFT来讲可以忽略不计,算法的时间复杂度为。

本文详细阐述了以上几种算法的算法思想及推导过程,对这几种算法的复杂度进行了分析,并使用matlab编程实现了前三个算法,借助具体实例进行比较分析,更深入的理解了算法的执行效率。

关键词:大整数乘法 分治法 快速傅里叶变换 时间复杂度

 

目录

摘要

Abstract

1引言-1

1.1研究背景及意义-1

1.2国内外研究现状-1

1.3本文主要工作-2

2早期的大数相乘算法-3

2.1竖式计算乘法-3

2.2Karatsuba乘法算法-5

2.2.1算法思想和复杂度分析-5

2.2.2算法的实现-7

2.2.3算法的最优讨论-10

3基于快速傅里叶变换的大数相乘算法-12

3.1时间复杂度为的大数相乘算法-12

3.1.1多项式乘法算法-12

3.1.2基于快速傅里叶变换计算点值-13

3.1.3基于快速傅里叶逆变换计算插值-16

3.1.4算法的实现与性能分析-18

3.2时间复杂度为的大数相乘算法-22

3.2.1算法思想-23

3.2.2算法的性能分析与优缺点-24

4总结-25

致谢-26

参考文献-27

相关论文资料:
最新评论
上传会员 螺蛳粉50g 对本文的描述:对于两个较小的整数,我们可以通过笔算或者计算机迅速的得到答案;而在某些特定的场合中,可能会涉及到较大的整数相乘问题,通过改进计算方法,设计新的算法来更加快速、准确......
发表评论 (我们特别支持正能量传递,您的参与就是我们最好的动力)
注册会员后发表精彩评论奖励积分,积分可以换金币,用于下载需要金币的原创资料。
您的昵称: 验证码: