大数相乘的最快乘法

早在数千年之前,巴比伦人就已经发明了乘法。而就在上个月,数学家们又对这一运算方式进行了优化,使它越来越完美。

3 月 18 日,两位研究人员有可能发现有史以来最快的计算两个超大数的乘法运算方式。这篇论文的诞生,也意味着数学界最基本的运算方式又有了更新更有效的运算过程,有望破解了一个已经存在近半个世纪的数学问题。

法国国家科学研究中心数学家,这篇论文的共同作者之一 Joris van der Hoeven 说道,“大部分人都以为自己在学校里面学到的方法就是最好的方法,但是实际上在研究界,有关乘法的计算方法领域一直是十分活跃的,而且不断有着新的突破和优化。”

有史以来最快大数相乘算法的两位发明人,上为法国国家科学研究中心的数学家 Joris van der Hoeven ,下为新南威尔士大学教授 David Harvey。在计算超大数时,下图中的传统计算方法会变得十分吃力(来源:École Polytechnique)

许多数学计算领域的难题,从圆周率的计算到寻找最新的更大的素数等等,其运算复杂性最终都将由为基本的乘法的运算速度决定。Van der Hoeven 认为,许多其他类型的问题理论上可以达到的最快的被解决的速度极限,最终也都将由乘法的运算速度决定。

“物理学中也有一些十分重要的常量,比如光速就是决定许多其他物理现象的基本参数,”Van der Hoeven 说,“如果你想知道计算机解决各种数学问题的速度有多快,那么整数乘法的运算速度也将是回答这一问题的一个基本参数,描述计算机的许多种运算的速度都将会用到这个参数。”

大多数人所学乘法的运算方法都是以下这种方法。将两个乘数排成两行,用下面的乘数中的每一位数字分别去乘以上面的乘数的每一位数字,然后将所有的相乘结果相加。比如说,如果是两个两位数的乘法运算,你需要进行四次两个一位数的相乘,然后将这四个相乘的结果相加。

这个我们在小学就学过的乘法的算法,即竖式计算乘法的方法,在进行 n 位数之间的相乘时,需要进行大约 n 的平方次个位数的相乘,这里 n 是每个乘数的位数。所以,两个三位数的乘法需要进行 9 次个位数的相乘,而如果你要进行的是两个 100 位数的大数相乘,就需要 10,000 次个位数的相乘。

上一篇:1-cascade MRI reconstruction: dataset.py


下一篇:Linux下的五个查找命令:grep、find、locate、whereis、which