
数字的基础算法
文章平均质量分 83
weixin_32931837
这个作者很懒,什么都没留下…
展开
-
数字的算法--大数乘法1
这一节来总结大数乘法,当然稍微熟悉算法的人都知道,有小于O(n2)O(n^2)O(n2)的分治算法,这个在后面再分析。我们先来从最简单的乘法规则说起。两个数x,y相乘的算法思想是:创建一个中间数组,数组中的每个元素用来存放x与y的每一位的乘积,每次乘积之后中间伴随着移位操作。最后将中间结果相加。假定我们想做乘法13∗1113*1113∗11,用二进制表示它们的结果是x = 1101,y=1011...原创 2019-03-05 15:14:04 · 587 阅读 · 0 评论 -
数字的算法--大数乘法2
准备一、数学家高斯曾经发现虽然计算两个复数的乘积看似包含4乘法:(a+bi)(c+di)=ac−bd+(ad+bc)i(a+bi)(c+di)=ac-bd+(ad+bc)i(a+bi)(c+di)=ac−bd+(ad+bc)i但是其实三次实数乘法就可已完成,因为我们需要的就是系数ac,bd,(ad+bc)ac,bd,(ad+bc)ac,bd,(ad+bc)(ad+bc)=(a+b)(c+d)...原创 2019-03-06 20:23:51 · 753 阅读 · 0 评论 -
数字的算法--大数加法
很多算法教程里都讨论过大数乘法,对于长数字的加法却很少做分析。因为正常的数字在计算机上一条指令就完成了加法操作。但是对于超过了计算机表示位数的大数字,加法需要按位操作计算。尽管也很简单,但是有一些细节容易忽略。对于两个n位数的加法,我们首先对齐它们的右端,然后从右至左的按位执行加法操作。在操作过程中维持一个进位,因此每个计算都可以看作三个一位数的加法操作。下面给出一个例子:对于两个n位数相...原创 2019-03-04 19:18:48 · 1523 阅读 · 0 评论