最小公倍数求法 (3种代码思路供参考 ) --(C语言实现)-- 详解

这篇具有很好参考价值的文章主要介绍了最小公倍数求法 (3种代码思路供参考 ) --(C语言实现)-- 详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


题目内容

正整数A和正整数B的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求A,B的最小公倍数

输入:

输入两个正整数A,B

输出:

输出:A,B的最小公倍数


一、题目解读

1、最小公倍数(LCM)是:能被A和B整除的最小的正整数
2、如何求最小公倍数:
思路一
最小公倍数一定是两个数中较大的值。
加法寻找:让较大的值赋值给m,利用m可以整除A和B来判断。如果m一次可以整除A和B就找到了最小公倍数,否则就m+1看下一位数是否可以整除A和B(需要循环);
乘法寻找:不用判断a,b谁为较大值,利用循环变量i(1-无穷),如果 a * i % b == 0或者 b * i % a== 0,就找到了最小公倍数a * i或b * i

思路二
利用辗转相除法求出最大公约数,再(a*b)/ 最大公约数=最小公倍数

思路三:假设a,b最小公倍数为k,k/a=i,k/b=j.就有(a*i)%b==0,
利用此条件为循环条件,求出最小公倍数.

最大公约数博客

二、代码实现

1.加法寻找最小公倍数

如果找到最小公倍数就返回t,没找到就t++找下一个数是否成立。
代码如下(示例):

//加法
int LCM(int a, int b)
{
	int t = 0;
	//将两个数中较大的给t
    //int t=a>b?a:b;三目操作符运算求两个中较大值
	if (a > b)
	{
		t = a;
	}
	else
	{
		t = b;
	}
	while (1)
	{
		if (t % a == 0 && t % b == 0)
		{
			return t;
		}
		t++;
	}
}

加法总代码

#include<stdio.h>
int LCM(int a, int b)
{
	int t = 0;
	//将两个数中较大的给t
	if (a > b)
	{
		t = a;
	}
	else
	{
		t = b;
	}
	while (1)
	{
		if (t % a == 0 && t % b == 0)
		{
			return t;
		}
		t++;
	}
}
int main()
{
	int a, b;
	scanf("%d %d", &a, &b);
	int ret=LCM(a, b);
	printf("最小公倍数=%d\n", ret);
	return 0;
}

2.乘法寻找最小公倍数

发现最小公倍数只能是两数中其中一个的整倍数,所以t是a,b中一个,t=t*i -> 如果得到的数可以整除a和b,则为最小公倍数;
代码如下(示例):

//最小公倍数最大可能就是两数相乘
	/*for (i = 1;t<=a*b;i++)
	{
		t *= i;
		if (t % a == 0 && t % b == 0)
		{
			return t;
		}
	}*/

上述代码重复太多,很多可以省去,代码改进如下

int LCM(int a, int b)
{
	int t = 0;
	int i = 0;
	for (i = 0;; i++)
	{
		if (a * i % b == 0)
		{
			return a * i;
		}
	}
}

乘法总代码

#include<stdio.h>
int LCM(int a, int b)
{
	int t = 0;
	int i = 0;
	//最小公倍数最大可能就是两数相乘
	/*for (i = 1;t<=a*b;i++)
	{
		t *= i;
		if (t % a == 0 && t % b == 0)
		{
			return t;
		}
	}*/
	for (i = 1;; i++)
	{
		if (a * i % b == 0)
		{
			return a * i;
		}
	}
}
int main()
{
	int a, b;
	scanf("%d %d", &a, &b);
	int ret=LCM(a, b);
	printf("最小公倍数=%d\n", ret);
	return 0;
}

3、辗转相除法求解最小公倍数

辗转相除法求出最大公约数,(a*b)/最大公约数==最小公倍数

#include<stdio.h>
int GCD(int a, int b)
{
	//a%b=t
	int t = 1;
	while (t)
	{
		t = a % b;
		a = b;
		b = t;
	}
	return a;
}
int main()
{
	int a, b;
	scanf("%d %d", &a, &b);
	int ret=GCD(a, b);
	int m = (a * b) / ret;
	printf("最小公倍数=%d\n", m);
	return 0;
}

4.利用乘法思路

利用k/a=i, k/b=j,可以得到(a*i)% b==0,以此为循环条件

代码如下:

int main()
{
	long long a = 0;
	long long b = 0;
	while (scanf("%lld %lld", &a, &b) == 2)
	{
		//假设ab最小公倍数k
		//k/a=i
		// k/b=j
		//就有(a*i)%b==0
		int i = 1;
		while ((a * i) % b != 0)
		{
			i++;
		}
		//跳出循环的就是最小公倍数
		printf("%lld\n", a * i);
	}
	
	return 0;
}

总结

利用代码解决问题,通过上述练习,希望能增强自己的逻辑思维,考虑的全面性,加强C语言的练习,让代码更优化。文章来源地址https://www.toymoban.com/news/detail-462023.html

到了这里,关于最小公倍数求法 (3种代码思路供参考 ) --(C语言实现)-- 详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【C语言】两个整数最大公约数和最小公倍数

    输入两个整数,求这两个数的最大公约数和最小公倍数。 第一种求法(辗转相除法)这个方法代码较洁简,我也比较推荐就是刚开始有点比较难了解。 首先,来看看怎么求最大公约数,求最大公约数需要用到 欧几里得算法 ,也称为辗转相除法。算法就是用两数中较大的数

    2024年02月04日
    浏览(47)
  • 【c语言】—求最大公约数和最小公倍数多种方法

    目录 一.求最大公约数 1.枚举法求最大公约数 2.辗转相除法 二.求最小公倍数 1.枚举法求最小公倍数 2.简易法 3.公式法 思路:先求两个数中的最小值,最大公约数不可能大于两个数的最小数 比如6和18,最大公约数就是6 再如3和9,最大公约数就是3 然后再从1开始循环遍历到最小

    2024年02月08日
    浏览(59)
  • 求其最大公约数和最小公倍数,一行代码完成

    题目:输入两个正整数 m 和 n,求其最大公约数和最小公倍数。 求出最大公约数就行,最小公倍数用m*n除以最大公约数就行

    2024年02月05日
    浏览(63)
  • C语言 多种方法求最大公因数和最小公倍数

    最大公约数: 指能够整除多个整数的最大正整数,而多个整数不能都为零。 最小公倍数: 两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数。 求最小公倍数的算法: 最小公倍数 = 两个整数的乘积 / 最大公因数 求最

    2024年02月05日
    浏览(34)
  • 【C语言】一篇博客带你弄懂最大公约数和最小公倍数

    我们在C语言的学习中,经常会遇到这样一些数学题目,良好掌握这些题目有利于我们理解和学习C语言,话不多说,直接进入主题 最大公约数: 首先我们举个例子,比如12 和16,12的约数有(1,2 ,3,4,6,12),16的约数有(1,2,4,8,16)公约数就是两个数共同的约数,(1,2,4)而公约数

    2024年02月04日
    浏览(48)
  • C语言——输入两个正整数m和n,求其最大公约数和最小公倍数

    目录 1.最大公约数求法 1.1辗转相除法 1.2相减法 2.最小公倍数求法 3.代码实现 4.结果展示 1.1辗转相除法 设有两整数a和b: a%b得余数c 若c==0,则b即为两数的最大公约数 若c!=0,则a=b,b=c,再回去执行第一步。 例如:求27和15的最大公约数过程为: 27÷15 余12 15÷12 余3 12÷3 余0 因

    2024年02月01日
    浏览(43)
  • C语言——输入两个正整数 m 和 n。求其最大公约数和最小公倍数。

    1、首先,程序通过printf函数提示用户输入两个正整数m和n,然后使用scanf函数接收用户的输入并将值分别存储到变量m和n中。 2、接下来,程序进入一个for循环,从1开始遍历直至i等于较小的数(m或n),检查当前数值i是否能同时整除m和n。如果i既能被m整除又能被n整除(即满足

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

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

    2024年02月06日
    浏览(41)
  • 拿捏--->最小公倍数

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

    2024年02月14日
    浏览(33)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包