1.试举法
//1.试举法
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
int max_com_div = a < b ? a : b;//假设a,b中较小值为最大公约数
while (max_com_div!=1)
{
if ((a % max_com_div == 0) && (b % max_com_div == 0))
{
break;
}
max_com_div--;
}
printf("%d\n", max_com_div);
return 0;
}
2.辗转相除法
//2.辗转相除法
int main()
{
int a = 0;
int b = 0;
int ret = 1;
scanf("%d %d", &a, &b);
while (ret = a%b)
{
a = b;
b = ret;
}
printf("%d\n", b);
return 0;
}
举例:
a=18 b=24 ret=1
ret = a%b = 18 a = b = 24 b = ret = 18
ret= a%b = 6 a = b = 18 b = re t= 6
ret=a%b=0 break 此时b即最大公约数