从现在到六月开始数学专题吧
首先来看最大公约数的求法
最大公约数的求法
定义
若自然数d同时是自然数a,b的约数,则称d是a,b的公约数,在所有a,b的公约数中,最大的那一个叫做a,b的最大公约数,简称gcd(a,b)
更相减损法,又称"等值算法"
“关于约分问题,实质是如何求分子,分母最大公约数的问题.《九章算术》中介绍了这个方法,叫做"更相减损术”,即"可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也。以等数约之。"
翻译成现代语言如下:
第一步:任意给定两个正整数;判断它们是否都是偶数。若是,则用2约简;若不是则执行第二步。
第二步:以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数。继续这个操作,直到所得的减数和差相等为止。
则第一步中约掉的若干个2与第二步中等数的乘积就是所求的最大公约数。
其中所说的"等数",就是最大公约数。求"等数"的办法是"更相减损"法。所以更相减损法也叫等值算法。
数学家刘徽对此法进行了明确的注解和说明,是一个实用的数学方法,中学生应该掌握它。
今有九十一分之四十九,问约之得几何?
我们用(91,49)表示91和49的最大公约数.按刘徽所说,分别列出分子,分母,"以少减多,更相减损,求其等也,以等数约之,等数约之,即除也,其所以相减者皆等数之重叠,故以等数约之."译文如下:约分的法则是:若分子、分母均为偶数时,可先被2除,否则,将分子与分母之数列在它处,然后以大数减小数,辗转相减,求它们的最大公约数,用最大公约数去约简分子与分母。其与古希腊欧几里德所著的《几何原本》中卷七第一个命题所论的相同。列式如下:
91≡42(mod49)
49≡7(mod42)
7│42
这里得到的7就叫做"等数",91和49都是这等数的重叠(即倍数),故7为其公约数.而7和7的最大公约数就是7,(7,7)=7,所以 (91,49)=(42,7)=(7,7)=7
更相减损术在现代仍有理论意义和实用价值.吴文俊教授说:"在我国,求两数最大公约数即等数,用更相减损之术,将两数以小减大累减以得之,如求24与15的等数,其逐步减损如下表所示: (24,15)->(9,15)->(9,6)->(3,6)->(3,3)
每次所得两数与前两数有相同的等数,两数之值逐步减少,因而到有限步后必然获得相同的两数,也即所求的等数,其理由不证自明.
这个寓理于算不证自明的方法,是完全构造性与机械化的尽可以据此编成程序上机实施".吴先生的话不仅说明了此法的理论价值,而且指明学习和研究的方向.
更相减损法很有研究价值,它奠定了我国渐近分数,不定分析,同余式论和大衍求一术的理论基础,望能仔细品味。
int gcd(int m,int n)
{
int i=0,temp,x;
while(m%20 && n%20) //判断m和n能被多少个2整除,这个是m,n mod 2判断等不等零,这不知道为啥。显示不出来
{
m/=2;
n/=2;
i+=1;
}
if(m<n) //m保存大的值
{
temp=m;
m=n;
n=temp;
}
while(x)
{
x=m-n;
m=(n>x)?n:x;
n=(n<x)?n:x;
if(n==(m-n))
break;
}
if(i==0)
return n;
else
return (int )pow(2,i)*n;
}
记得素质三连,哦,走错片场啦