求最大公约数和最小公倍数的算法

简介: 求最大公约数和最小公倍数的算法

理论部分(辗转相除法)

 

代码部分

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//求最大公约数
int gcd(int a, int b)
{
  int temp;
  while (b > 0)
  {
    temp = a % b;//创建一个变量存储a%b的余数
    a = b;//根据算法逻辑,用上一个式子的除数作下一个式子的被除数(所以a=b),上一个式子的余数作为下一个式子的除数(b=temp),直到余数为0;
    b = temp;
  }
  return a;//最后一定是返回除数
}
int lcm(int a, int b)
{
  return (a * b) / gcd(a, b);//利用公式   ab的乘积除以他们的最大公约数得到的结果为最小公倍数
}
int main()
{
  int a, b;
  printf("请输入两个正整数:\n");
  scanf("%d %d", &a, &b);
  int max = gcd(a, b);
  int min = lcm(a, b);
  printf("最大公约数为:%d\n", max);
  printf("最小公倍数为:%d\n", min);
  return 0;
}

暴力枚举法

/*枚举法:从1开始,直到i能够把a,b全部整除*/
int main()
{
  int a = 0;
  int b = 0;
  int i = 1;
  scanf("%d %d", &a, &b);
  while (i % a != 0 || i % b != 0)
  {
    i++;
  }
  printf("%d", i);
}
/*乘法枚举*/
int main()
{
    long long int a = 0;
    long long int b = 0;
    int i = 1;
    scanf("%d%d",&a,&b);
    while (a * i % b)
    {
      i++;
    }
    printf("%lld", a*i);
}

希望能对读者有所帮助!

目录
相关文章
|
13天前
|
人工智能 算法 C++
c++算法学习笔记 (18) 约数
c++算法学习笔记 (18) 约数
|
22天前
|
算法 Python
Python欧几里得算法找最大公约数
Python欧几里得算法找最大公约数
19 0
|
22天前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-2 算法训练 最大最小公倍数
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-2 算法训练 最大最小公倍数
25 0
|
22天前
|
算法 Python
最大公约数算法
最大公约数算法
|
22天前
|
算法 Python
最小公倍数算法
最小公倍数算法
|
12月前
|
算法
算法训练之最大最小公倍数 ALGO002
算法训练之最大最小公倍数 ALGO002
31 0
|
算法 Python
转:最大公约数算法很无聊吗?一个轻松方法(辗转相除法)3行代码搞定
最大公约数算法不是很无聊,计算最大公约数是数学中一个重要的概念,可以用于判断两个数是否互质、求分数的约分等,在很多领域都有广泛的应用。辗转相除法3行代码搞定。
49 0
|
算法 C++
每日算法系列【LeetCode 1363】形成三的最大倍数
每日算法系列【LeetCode 1363】形成三的最大倍数
算法--递归辗转相除法求最大公约数
算法--递归辗转相除法求最大公约数
|
算法
求最大公约数和最小公倍数的几种算法
求最大公约数和最小公倍数的几种算法
90 0