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

来源:互联网 发布:部落冲突兵种升级数据 编辑:程序博客网 时间:2024/05/13 03:46

辗转相除法:设两数为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循环内交换值时发生错误

阅读全文
0 0
原创粉丝点击