1.1欧几里得算法

题目:利用欧几里得原理求解最大公约数。

欧几里得原理(又称辗转相除法):用较大的数除以较小的数,再用得到的余数较小的数,接着用得到的余数去上一次相除得到的余数,如此除下去直到得到的余数为0,最后一次除法的除数就是最大公约数。

例如:求144和56的最大公约数。

144/56=2......32;  (或144%56=32)

56/32=1......24;    (或56%32=24)

32/24=1......8;      (或32%24=8)

24/8=3......0;        (或24%8=0)

最后一次除法的除数为8,则得到144和56的最大公约数为8.

看完具体的例子,我们再来看抽象的例子:

假设有两个正整数a,b(a>b),求他们的最小公约数。

求解步骤如下:

        a%b = r1(0<=r1

           若r1 = 0,则a,b的最大公约数为r1;

           若r1 != 0,则b%r1=r2:

                若r2 = 0;则a,b的最大公约数为r2;

                若r2 !=0,则r1%r2 = r3:

      ......

最后得到 r(n-1) % r(n) =0,所以a,b的最大公约数为 r(n)。

代码实现:

//主函数
#include
int gcd(int a,int b);
int main()
{
	int a,b;
	scanf("%d%d",&a,&b);
	printf("%d",gcd(a,b));
	
 } 

int gcd(int a,int b)
{
	int x;
    //这里的交换数值可以另外定义一个函数
    if(a

以上是欧几里得算法的所有内容,如有错误,欢迎指正。        

 

你可能感兴趣的:(算法,算法)