欧几里得算法又称辗转相除法,是指用于计算两个非负整数a,b的最大公约数。
计算公式为gcd(a,b) = gcd(b,a mod b)= gcd(a mod b,b mod (a mod b))→直到gcd(m,0)。
b处的值放入a,b处的值变为原a的值对原b的值
比如:a=12,b=8,gcd(12,8)=gcd(8,4)=gcd(4,0),所以m=4,即最大公约数为4。
#include<stdio.h>
int main()
{
int a=0,b=0;//求a,b的最大公约数
scanf("%d %d",&a,&b);
int m=0;//用于存放最大公约数
int t=0;//设置一个存放器,用于存放a值
while(b!=0)//直到b变量为0,a变量就是所求的最大公约数
{
t=b;
b=a%b;//b为a对b取余数
a=t;//把原来b的值放入a变量中
}
printf("%d",a);
return 0;
}