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

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

理论部分(辗转相除法)

 

代码部分

#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);
}

希望能对读者有所帮助!

目录
相关文章
|
7月前
|
人工智能 算法 C++
c++算法学习笔记 (18) 约数
c++算法学习笔记 (18) 约数
|
7月前
|
算法 Python
Python欧几里得算法找最大公约数
Python欧几里得算法找最大公约数
79 0
|
7月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-2 算法训练 最大最小公倍数
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-2 算法训练 最大最小公倍数
52 0
|
7月前
|
算法 Python
最大公约数算法
最大公约数算法
|
7月前
|
算法 Python
最小公倍数算法
最小公倍数算法
|
算法
算法训练之最大最小公倍数 ALGO002
算法训练之最大最小公倍数 ALGO002
55 0
|
算法 Python
转:最大公约数算法很无聊吗?一个轻松方法(辗转相除法)3行代码搞定
最大公约数算法不是很无聊,计算最大公约数是数学中一个重要的概念,可以用于判断两个数是否互质、求分数的约分等,在很多领域都有广泛的应用。辗转相除法3行代码搞定。
75 0
|
算法 C++
每日算法系列【LeetCode 1363】形成三的最大倍数
每日算法系列【LeetCode 1363】形成三的最大倍数
|
18天前
|
算法
基于WOA算法的SVDD参数寻优matlab仿真
该程序利用鲸鱼优化算法(WOA)对支持向量数据描述(SVDD)模型的参数进行优化,以提高数据分类的准确性。通过MATLAB2022A实现,展示了不同信噪比(SNR)下模型的分类误差。WOA通过模拟鲸鱼捕食行为,动态调整SVDD参数,如惩罚因子C和核函数参数γ,以寻找最优参数组合,增强模型的鲁棒性和泛化能力。
|
4天前
|
供应链 算法 调度
排队算法的matlab仿真,带GUI界面
该程序使用MATLAB 2022A版本实现排队算法的仿真,并带有GUI界面。程序支持单队列单服务台、单队列多服务台和多队列多服务台三种排队方式。核心函数`func_mms2`通过模拟到达时间和服务时间,计算阻塞率和利用率。排队论研究系统中顾客和服务台的交互行为,广泛应用于通信网络、生产调度和服务行业等领域,旨在优化系统性能,减少等待时间,提高资源利用率。