你是真的“C”——求两个正数最小公倍数的3种境界~

简介: 必备小知识~😘什么是最小公倍数和最大公约数(最大公因数)?

微信图片_20230427171714.gif

博客昵称:博客小梦😊

最喜欢的座右铭:全神贯注的上吧!!!

作者简介:一名热爱C/C++,算法等技术、喜爱运动、热爱K歌、敢于追梦的小博主!

博主小留言:哈喽!😄各位CSDN的uu们,我是你的博客好友小梦,希望我的文章可以给您带来一定的帮助,话不多说,文章推上!欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!😘微信图片_20230427160707.gif

前言🙌


   哈喽各位友友们😊,我今天又学到了很多有趣的知识,现在迫不及待的想和大家分享一下!😘我仅已此文,手把手用C语言讲解求两个正数最小公倍数的3种境界!都是精华内容,可不要错过哟!!!😍😍😍


必备小知识~😘


什么是最小公倍数和最大公约数(最大公因数)?


最小公倍数就是可以整除这两个数的最小的数,例如:6和9的最小公倍数就是18,3和5的最小公倍数是15。==也可以说是两个数相乘除以他们的最大公约数==。

最大公约数的概念和最小公倍数正好相反,就是两个数都可以整除的最大的数,如3和5的最大公约数就是1,而6和9的最大公约数就是3。


求最小公倍数境界1~ 😊


境界1的算法求解过程分析:


这里的变量count 主要是求其循环比较的次数,通过这个可以比较看出三种境界算法的优劣性。

先定义一个count变量存储这两个数的最大值。

如果满足 max % a != 0 || max % b != 0,就让最大值加1,直到有一个能够被a和b同时整除的数就退出循环,这个数就是a和b的最小公倍数。


境界1源码: 😍


#include <stdio.h>
int main()
{
  int a = 0;
  int b = 0;
  scanf("%d %d", &a, &b);
  int count = 0;
  int max = a > b ? a : b;//先找到最大值
  while (max % a !=  0 || max % b != 0)
  {
    max++;
    count++;
  }
  printf("最小公倍数 = %d,比较运行的次数 = %d ", max,count);
  return 0;
}


代码结果运行图: 😍


微信图片_20230427172035.png


可见count = 39204 ,这个循环比较次数为39204,可见其算法效率非常低效。有没有更好的算法呢?请耐心看下文分析~


求最小公倍数境界2~ 😊


境界2的算法求解过程分析:


这里的变量count 主要是求其循环比较的次数,通过这个可以比较看出三种境界算法的优劣性。

定义一个变量i,让它从1开始,符合条件就自增。一个数的i倍,即乘以i其表达式结果就是这个数倍数,如果可以被另一个数整除,说明这个倍数就是这两个数的公倍数。因为i是从1开始自增的,所以第一个满足这个条件的一定是这两个数的最小公倍数啦。


境界2源码: 😍


#include <stdio.h>
int main()
{
  int a = 0;
  int b = 0;
  scanf("%d %d", &a, &b);
  int i = 1;
  int count = 0;
  while (i*a % b != 0)
  {
    i++;
    count++;
  }
  printf("最小公倍数 = %d,比较运行的次数 = %d ",i*a,count);
  return 0;
}


代码结果运行图: 😍


微信图片_20230427172239.png


可见count = 1781 ,这个循环比较次数为1781,可见其算法效率比境界一有了明显的改善!那还有没有比这个更好的算法呢?请耐心看下文分析~


求最小公倍数境界3~ 😊


辗转相除法流程图解:


微信图片_20230427172322.png


境界3源码: 😍


#include <stdio.h>
int main()
{
  int m = 0;
  int n = 0;
  scanf("%d %d", &m, &n);
  int a = m * n;
  int r = 0;
  int count = 0;
  while (r = m % n)
  {
    m = n;
    n = r;
    count++;
  }
  printf("最小公倍数 = %d,比较运行的次数 = %d ", a / n, count);
  return 0;
}


代码结果运行图: 😍


微信图片_20230427172434.png


可见count = 3 ,这个循环比较次数为3,可见其算法效率真的是太惊人了!,但是这个算法还是有一个缺点,就是变量 a = m * n。如果这两个数很大,可能它们相乘的结果太大超出类型的最大数值。


总结撒花💞


本篇文章旨在带领大家利用C语言详解 - 求两个正数最小公倍数的3种境界。希望大家通过阅读此文有所收获!😘如果我写的有什么不好之处,请在文章下方给出你宝贵的意见😊。如果觉得我写的好的话请点个赞赞和关注哦~😘


相关文章
|
安全 数据处理 数据安全/隐私保护
企业出海数据合规:何为数据脱敏
数据脱敏并非简单技术手段,其涵盖法律与技术双重维度。法律上,脱敏是保护个人隐私的一种效果,技术上则是采用不可逆或难以还原的方法,降低数据泄露风险。GDPR下,个人身份、账户和健康信息等应脱敏处理,程度可根据数据敏感性确定。脱敏常见方法包括随机化、掩码、加密等,旨在保护数据安全与隐私。
1538 0
|
机器学习/深度学习 自然语言处理 算法
文本摘要(text summarization)任务:研究范式,重要模型,评估指标(持续更新ing...)
本文是作者在学习文本摘要任务的过程中,根据学习资料总结逐步得到并整理为成文的相关内容。相关学习资料(包括论文、博文、视频等)都会以脚注等形式标明。有一些在一篇内会导致篇幅过长的内容会延伸到其他博文中撰写,但会在本文中提供超链接。 本文将主要列举里程碑式的重要文本摘要论文。 注意:除文首的表格外,本文所参考的论文,如本人已撰写对应的学习博文,则不直接引用原论文,而引用我撰写的博文。 本文会长期更新。
文本摘要(text summarization)任务:研究范式,重要模型,评估指标(持续更新ing...)
|
机器学习/深度学习 编解码 算法
MMDetection系列 | 4. MMDetection模型代码训练及测试过程的详细解析
MMDetection系列 | 4. MMDetection模型代码训练及测试过程的详细解析
1423 0
MMDetection系列 | 4. MMDetection模型代码训练及测试过程的详细解析
|
传感器 人工智能 算法
《流形学习:破解人工智能复杂数据处理难题的利刃》
流形学习降维算法,如Isomap和LLE,通过挖掘数据的内在几何结构,有效应对高维图像、文本和传感器等复杂数据带来的挑战。Isomap基于测地线距离保持全局结构,LLE则侧重局部线性重构,二者在人脸识别、生物医学数据分析、自然语言处理及传感器数据分析等领域展现出独特优势。尽管面临计算复杂度和噪声影响等挑战,流形学习仍为复杂数据处理提供了强大工具,未来结合深度学习等技术将有更广泛应用前景。
531 10
|
监控 图形学
Unity 倒计时的实现
在 Unity 中实现倒计时功能,主要利用 `Time.deltaTime` 进行精确的时间计算和监控。本文介绍两种常见实现方法:一是通过 `WaitForSeconds(1)` 每秒递减时间,二是基于 `Update()` 函数每帧减去 `Time.deltaTime`。代码中包含详细的注释和示例,需确保挂载 Text 组件以显示倒计时。
|
安全 Java API
Spring Security 6.x 图解身份认证的架构设计
【6月更文挑战第1天】本文主要介绍了Spring Security在身份认证方面的架构设计,以及主要业务流程,及核心代码的实现
609 1
Spring Security 6.x 图解身份认证的架构设计
|
JavaScript 前端开发
【Web 前端】jQuery 库中的 $() 是什么?
【5月更文挑战第1天】【Web 前端】jQuery 库中的 $() 是什么?
|
Java 测试技术 数据库连接
PHP和Java哪个更难?
【7月更文挑战第2天】PHP和Java哪个更难?
483 0
|
SQL 安全 PHP
CTF--Web安全--SQL注入之Post-Union注入
CTF--Web安全--SQL注入之Post-Union注入

热门文章

最新文章