整除的性质,欧几里得算法

第一节 整除:

假设x和y是整数,且x 0,x整除y即为y是x的倍数。
如果x整除y记作xy,如果x不整除y(即x%y!=0),则记作xy
例:2整除4,则记作2 4,2不整除5则记作2 5

第二节:最大公因数

两个不同时为 0 的数 a 与 b 的最⼤公因数是同时整除它们的 两个最⼤的。

由此可得以下的性质

设整数a、b(a 0,且b 0),则a和b的最大公约数记作gcd(a,b)。注:如果gcd(a,b)=1,则称a与b互素。
例:gcd(10,15)=5,gcd(3,9)=3,gcd(6,7)=1;
我们可以使用之后学到的欧几里得算法求得两个数得最大公约数。

第三节 欧几里得算法

证明:gcd(x,y)=gcd(x,y mod x)
首先设g=gcd(x,y),m=y mod x,即可得x=ky+m(解释:k是x/y,而r为x%y,所以x=ky+m,也就是商*除数+余数),根据最大公因数得性质(即g同时整除x和y),可得g整除m,也就可得g是整除m和y的最大整数,所以gcd(x,y)=gcd(x,m)即可证明gcd(x,y)=gcd(x,y mod x)。
根据此算法,即可得到时间复杂度较低的最大公因数函数:

int gcd(int a,int b)
{
    if(b==0)return a;
    else return gcd(b,a%b)
}

欧几里得算法就是用递归应用这个等式可以轻易得到的两个数的最大公因数(终于可以不用老方法跑了!)

你可能感兴趣的:(整除的性质,欧几里得算法)