辗转相除法有名欧几里德算法即求两个数之最大因子的算法。
即设两个数a,b假设a>b就用a%b,得到余数c,若c为0那么b即为最大公约数,若c不为0,则将b赋值给a,将c值赋值给b,一直辗转相除到c为0。
给定两个数,求这两个数的最大公约数
代码如下:
#include<stdio.h>
int main()
{
int a, b;
int max = 0;
int n = 0;
scanf("%d %d", &a, &b);
if (a < b)
{
max = a;
a = b;
b = max;
}
n = a % b;
while (n!=0)
{
a = b;
b = n;
n = a % b;
}
printf("%d", b);
return 0;
}
运行结果: