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

这篇具有很好参考价值的文章主要介绍了你是真的“C”——求两个正数最小公倍数的3种境界~。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


c语言两个正数最小公倍数,你是真的“C”,c语言,算法,c++

   
博客昵称:博客小梦😊
最喜欢的座右铭:全神贯注的上吧!!!
作者简介:一名热爱C/C++,算法等技术、喜爱运动、热爱K歌、敢于追梦的小博主!

博主小留言:哈喽!😄各位CSDN的uu们,我是你的博客好友小梦,希望我的文章可以给您带来一定的帮助,话不多说,文章推上!欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!😘
c语言两个正数最小公倍数,你是真的“C”,c语言,算法,c++

前言🙌

    哈喽各位友友们😊,我今天又学到了很多有趣的知识现在迫不及待的想和大家分享一下!😘我仅已此文,手把手用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;
}

代码结果运行图: 😍

c语言两个正数最小公倍数,你是真的“C”,c语言,算法,c++可见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;
}

代码结果运行图: 😍
c语言两个正数最小公倍数,你是真的“C”,c语言,算法,c++
可见count = 1781 ,这个循环比较次数为1781,可见其算法效率比境界一有了明显的改善!那还有没有比这个更好的算法呢?请耐心看下文分析~

求最小公倍数境界3~ 😊

辗转相除法流程图解

c语言两个正数最小公倍数,你是真的“C”,c语言,算法,c++

境界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;
}

代码结果运行图: 😍

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

总结撒花💞

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

到了这里,关于你是真的“C”——求两个正数最小公倍数的3种境界~的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 拿捏--->最小公倍数

    给定两个数,求这两个数的最小公倍数 例如: 输入:10 20 输出:20 最小公倍数是指两个或多个整数公有的倍数中,除0以外最小的一个公倍数。 两数乘积=最小公倍数*最大公约数 在上篇求最大公约数的四种方法中,我们已经能够求得最大公约数,借此便能求得最小公倍数 自

    2024年02月14日
    浏览(26)
  • Python求最小公倍数

    最小公倍数 :两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数。整数a,b的最小公倍数记为[a,b],同样的,a,b,c的最小公倍数记为[a,b,c],多个整数的最小公倍数也有同样的记号。 利用 Python 求最小公倍数(

    2024年02月06日
    浏览(27)
  • 809. 最小公倍数

    链接: 链接 题目: 输入两个整数 aa 和 bb,请你编写一个函数, int lcm(int a, int b) ,计算并输出 aa 和 bb 的最小公倍数。 输入格式 共一行,包含两个整数 aa 和 bb。 输出格式 共一行,包含一个整数,表示 aa 和 bb 的最小公倍数。 数据范围 1≤a,b≤10001≤a,b≤1000 输入

    2024年02月13日
    浏览(23)
  • 最小公倍数Python——三种方法

    最小公倍数 = 两数的乘积 / 最大公约数 这种方法的实现原理是求两个正整数的余数 r ,再用两个正整数中的较小数与其再求余直到余数为 0 时,此时的较小数就是最大公约数。最后利用公式计算得到这两个数的最小公倍数。 代码示例: 这种方法比较易于理解,原理是先判断

    2024年04月14日
    浏览(26)
  • 最大公约数和最小公倍数问题

    等差数列 蓝桥杯192 gcd问题 题目描述 数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一 部分的数列,只记得其中 N 个整数。 现在给出这 N 个整数,小明想知道包含这 N 个整数的最短的等差数列有几项? 思路:求出每一项之差的最大公约数,以这个

    2023年04月09日
    浏览(32)
  • HJ108:求最小公倍数 python

    def gcd(a,b):     if ab:         smaller=a     else:         smaller=b     for i in range(smaller,0,-1):         if a%i==0 and b%i==0:             return smaller         else:             smaller-=1 def lcm1(a,b):     g=gcd(a,b)     return a*b/g 跑不出结果,求指教哪里出问题

    2023年04月09日
    浏览(63)
  • C++ 最大公约数与最小公倍数

    (一)简单的两个正整数  求 最大公约数 (引入专题) 思路: 根据 “欧几里得算法”  ,即 “辗转相除法” 原理如下: 题意: 求出   a  , b  两个正整数的最大公约数 设  k = a / b,   r = a % b 即    a = k * b + r 又设  d  为 a 和 b 的一个公约数 那么由  r = a - k * b,  可

    2024年02月06日
    浏览(37)
  • C语言—最大公约数和最小公倍数

    作者主页: paper jie的博客_CSDN博客-C语言,算法详解领域博主 本文作者: 大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于 《算法详解》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造,将算法基础知识一网打尽,希望

    2024年02月13日
    浏览(29)
  • 求最小公倍数的3种方法(C语言)

    最小公倍数是什么呢?它是指能同时整除a和b的最小正整数,比如,3和7的公倍数有21,42,84等,21就是最小公倍数。 下面介绍3种方法来求最小公倍数。 1.辗转相除法:a和b的最小公倍数=a*b/(a和b的最大公约数)  2.a和b的最小公倍数,随便拿一个数,比如a,由小到大找出a的倍数,

    2024年02月06日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包