2016 - 2024

感恩一路有你

欧几里得算法 欧几里德算法原理原理是什么呀不太明白?

浏览量:2959 时间:2021-03-12 11:00:30 作者:admin

欧几里德算法原理原理是什么呀不太明白?

欧几里德算法欧几里德算法又称旋转除法,用于计算两个整数a和B的最大公约数,其计算原理取决于以下定理:定理:GCD(a,B)=GCD(B,amodb)证明:a可以表示为a=KB R,那么R=amodb假设D是a,B的公约数,那么d | a,d | B,R=a-kb,那么d | R,那么d是(B,amodb)的公约数,假设d是(B,amodb)的公约数,那么d | B,d | R,但是a=kb,所以d也是(a,B)的公约数。因此,(a,b)和(b,amodb)的公约数是相同的,它们的最大公约数必须是相同的。证明了这句话可以理解数学对于计算机算法编程的重要性。我将主要从以下两个方面来解释为什么它如此重要

数学和算法编程需要很强的逻辑思维能力。程序代码的逻辑结构、连接方式和处理方式需要较强的逻辑思维能力。如果你学好数学,有很强的逻辑思维能力,你通常会对算法编程有更深的理解。

这应该是为什么数学和算法编程更相关的一个重要原因。无论是计算机的底层还是底层,数学知识都处处体现。例如,计算机底层的二进制、机器学习和深度学习的梯度求导、SVD分解、张量分解、PCA特征值、优化问题、密码学的大数分解、概率图模型等都与数学有着密切的关系。我举两个例子来实现

代码实现如下

代码比(float)(1.0/sqrt(x))快4倍,计算性能有了质的飞跃。为此,专门有一篇论文《快速平方根逆》来解释这段代码的数学原理。感兴趣的同学可以找这篇文章学习。

如果不直接使用数学知识和搜索,时间复杂度为O(n),效率较低,很难按照目前的计算机水平进行计算。如果我们知道Brahmagupta–Fibonacci恒等式、Pollard-Rho分解法、二次同余方程的解、欧氏除法等数学知识,那么求解这个问题的时间复杂度就大大降低,结果保证在0.2秒之内。

如果工作是算法岗位,数学更重要,因为机器学习、数据挖掘、NLP等方向的基本原理基本上都离不开数学。

计算机编程算法和数学有什么关系?

扩展欧几里德算法用于求解已知a,B中的一组X,y,使其满足bezu方程:ax by=GCD(a,B)=D(根据数论中的相关定理,解必须存在)。扩展欧几里德常被用来求解模线性方程组。下面是一个使用C的实现:intexgcd(int a,int b,int&x,int&y){if(b==0){x=1y=0 return a}intr=exgcd(b,a%b,x,y)intt=XX=YY=T-a/b*y return r}将这个实现与GCD的递归实现进行比较,我们发现下面有更多的x,y值进程,这是扩展欧氏算法的本质。

欧几里得算法 扩展欧几里得算法理解 欧几里得扩展算法

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。