// 最大公约数
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));
}
}
【C++|最大公约数&最小公倍数(GCD,LCM)】
推荐阅读
- 个人日记|K8s中Pod生命周期和重启策略
- 学习分享|【C语言函数基础】
- C++|C++浇水装置问题
- 数据结构|C++技巧(用class类实现链表)
- C++|从零开始学C++之基本知识
- 步履拾级杂记|VS2019的各种使用问题及解决方法
- leetcode题解|leetcode#106. 从中序与后序遍历序列构造二叉树
- 动态规划|暴力递归经典问题
- 麦克算法|4指针与队列
- 遇见蓝桥遇见你|小唐开始刷蓝桥(一)2020年第十一届C/C++ B组第二场蓝桥杯省赛真题