您的位置:首页 > 其它

辗转相除法求两个数的最大公约数

2017-11-14 11:10 766 查看
辗转相除法:设两数为a、b(a>b),求a和b最大公约数(a,b)的步骤如下:

1. 用a除以b,得a÷b=q ……r 1(0≤r1)。若r 1=0,则(a,b)=b;

2. 若r 1≠0,则再用b除以r 1,得b÷r 1=q ……r 2 (0≤r 2).若r 2=0,则(a,b)=r 1,若r 2≠0,则继续用r 1除以r 2, ……如此下去,直到能整除为止。其最后一个余数为0的被除数的除数即为(a, b)的最大公约数。

**例如:**a=25,b=15,a/b=1 ……10,b/10=1 ……5,10/5=2 …….0,最后一个余数为0的被除数的除数就是5, 5就是所求最大公约数。

#include<stdio.h>
int main()
{
int a, b, r;
printf("请输入两个整数\n");
scanf("%d %d", &a, &b);
if (a%b == 0)//能整除,说明除数是最大公约数
{
printf("最大公约数为b=%d\n", b);
}
else
{
while (a%b!=0)
{
r = a%b;
a = b;
b = r;
}
printf("最大公约数为b=%d\n", b);
}
return 0;
}


**难点:**while循环内交换值时发生错误
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: