// 最大公约数
void get_GCD()
{
int a, b;
while (scanf_s("%d%d", &a, &b) != EOF)
{
/*
求解两个正整数的最大公约数:
假设为a,b;如果g是a,b的最大公约数,那么g也一定是b和(a mod b)的最大公约数
则可以迭代:
a = b,b = a mod b把问题规模降下来
*/
if (a == 0 && b == 0)
{
printf("No exist gcd\n");
continue;
}
else if (a == 0 && b != 0)
printf("%d\n", b);
else if (a != 0 && b == 0)
printf("%d\n", a);
else {
while (a && b)
{
int tmp = a%b;
a = b;
b = tmp;
}
if (a == 0)
printf("%d\n", b);
else
printf("%d\n", a);
}
}
}
// 最小公倍数
void get_LCM()
{
int a, b;
while (scanf_s("%d%d", &a, &b) != EOF)
{
/*
求解两个正整数的最大公约数:
假设为a,b;如果g是a,b的最大公约数,那么g也一定是b和(a mod b)的最大公约数
则可以迭代:
a = b,b = a mod b把问题规模降下来
*/
int gcd;
int a_copy = a;
int b_copy = b;
if (a == 0 && b == 0)
{
printf("No exist gcd\n");
printf("No exist lcm\n");
continue;
}
else if (a == 0 && b != 0)
gcd = b;
else if (a != 0 && b == 0)
gcd = a;
else {
while (a && b)
{
int tmp = a%b;
a = b;
b = tmp;
}
if (a == 0)
gcd = b;
else
gcd = a;
}
printf("%d\n", (a_copy*b_copy/gcd));
}
}