展转相除法
在我们编程中用的最多方法就是展转相除法了,展转相除法是古希腊求两个正整数的最大公约数的也叫欧几里德算法,用较大的数除以较小的数,结果的余数和被除数构成新的一对数,继续做上面的除法,直到大数被小数求尽,这个较小的数就是最大公约数.以求288和123的最大公约数为例,操作如下:
(288,123)--(42,123)--(42,39)--(3,39)则3就是他们的最大公约数。
程序如下:
#include <stdio.h>
int main()
{
int a, b, c;
printf("Please input two integers: ");
//输入两个整型数
scanf("%d %d", &a, &b);
//把大的数放前面,方便后面的循环
if(a<b)
{
c = a;
a = b;
b = c;
}
//循环,知道两个数相除余数为零
while(a % b != 0)
{
//求余数
c = a % b;
a = b;
b = c;
}
//打印出小的数,就是最大公约数
printf("%d", b);
//程序返回
return 0;
}