读书人

欧几里得法递归求最贵族约数

发布时间: 2012-09-14 11:53:44 作者: rapoo

欧几里得法递归求最大公约数

/* 用欧几里德算法求最大公约数 * 求最大公约数是一个比较基础的问题, * 欧几里得早在《几何原本》中就阐明了一个高效的算法, * 据说这大概发生在公元前300年左右。 * 具体是这样的:假设把x和y的最大公约数表示成为f(x,y), * 并且x>=y>0。现在取k=x/y,b=x%y,则x=k*y+b, * 变形为b=x - k*y;x和y能被f(x,y)整除,那么b也能被f(x,y)整除; * 所以 f(x,y) = f(y,x%y) */#include<stdio.h>int GCD(int x,int y){return (!y) ? x : GCD(y,x%y);}int main(){int m ,n;printf("Please input two number:\n");scanf("%d %d",&m,&n);printf("Result : %d",GCD(m,n));return 0;}

读书人网 >编程

热点推荐