重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
c语言最小公倍数的求法如下:
创新互联-专业网站定制、快速模板网站建设、高性价比海湖新网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式海湖新网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖海湖新地区。费用合理售后完善,十余年实体公司更值得信赖。
两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数。整数a,b的最小公倍数记为[a,b],同样的,a,b,c的最小公倍数记为[a,b,c],多个整数的最小公倍数也有同样的记号。
与最小公倍数相对应的概念是最大公约数,a,b的最大公约数记为(a,b)。关于最小公倍数与最大公约数,我们有这样的定理:(a,b)x[a,b]=ab(a,b均为整数)。
方法一:穷举法
假设有两个整数num1和num2,这两个整数的最小公倍数一定大于等于它们的最大值,同时小于等于它们的积。按从小到大的顺序遍历整个范围内的所有整数,第一个公因数即为它们的最小公倍数。【不考虑负数,求负数的最小公倍数本就是无意义的(相当于求两个正数的最大公倍数)】
方法二:定理法
使用定理求最小公倍数(两个整数的最小公倍数等于两数之积除以两个数的最大公因数),需要先求出两个整数的最大公因数,最大公因数这里采用辗转相除法。(最大公因数的求法可以参考我上一篇文章——第68天:求最大公约数(使用三种方法))【不考虑负数,求负数的最小公倍数本就是无意义的(相当于求两个正数的最大公倍数)】
#includelt;stdio.hgt;
int main()
{
int m,n,temp,i;
printf("Input mn:");
scanf("%d%d",m,n);
if(mlt;n)/*比较大小,使得m中存储大数,n中存储小数*/
{
temp=m;
m=n;
n=temp;
}
for(i=m;igt;0;i++)/*从大数开始寻找满足条件的自然数*/
if(i%m==0i%n==0)
{/*输出满足条件的自然数并结束循环*/
printf("The LCW of%d and%d is:%d\n",m,n,i);
break;
}
return 0;
}
算法设计
对于输入的两个正整数m和n每次输入的大小顺序可能不同,为了使程序具有一般性,首先对整数所m和n进行大小排序,规定变量m中存储大数、变量n中存储小数。
输入的两个数,大数m是小数n的倍数,那么大数m即为所求的最小公倍数;若大数m不能被小数n整除则需要寻找一个能同时被两数整除的自然数。
从大数m开始依次向后递增直到找到第一个能同时被两数整除的数为止,所以循环变量i的初值为寻找第一个能同时被两整数整除的自然数,并将其输出。需要注意的是,在找到第一个满足条件的i值后,循环没必要继续下去,所以用break来结束循环。
扩展资料:
include用法:
#include命令预处理命令的一种,预处理命令可以将别的源代码内容插入到所指定的位置;可以标识出只有在特定条件下才会被编译的某一段程序代码;可以定义类似标识符功能的宏,在编译时,预处理器会用别的文本取代该宏。
插入头文件的内容
#include命令告诉预处理器将指定头文件的内容插入到预处理器命令的相应位置。有两种方式可以指定插入头文件:
1、#includelt;文件名gt;
2、#include"文件名"
如果需要包含标准库头文件或者实现版本所提供的头文件,应该使用第一种格式。如下例所示:
#includelt;math.hgt;//一些数学函数的原型,以及相关的类型和宏
如果需要包含针对程序所开发的源文件,则应该使用第二种格式。
采用#include命令所插入的文件,通常文件扩展名是.h,文件包括函数原型、宏定义和类型定义。只要使用#include命令,这些定义就可被任何源文件使用。如下例所示:
#include"myproject.h"//用在当前项目中的函数原型、类型定义和宏
你可以在#include命令中使用宏。如果使用宏,该宏的取代结果必须确保生成正确的#include命令。例1展示了这样的#include命令。
【例1】在#include命令中的宏
#ifdef _DEBUG_
#define MY_HEADER"myProject_dbg.h"
#else
#define MY_HEADER"myProject.h"
#endif
#include MY_HEADER
当上述程序代码进入预处理时,如果_DEBUG_宏已被定义,那么预处理器会插入myProject_dbg.h的内容;如果还没定义,则插入myProject.h的内容。
如图使用辗转相除法求最小公倍数:
方法步骤:
一、打开VC2010(或其他C语言编译器),新建项目-选择Win32为控制台应用程序-命名-确定
二、选择源文件-添加-新建项
三、选择C++文件-命名.c-添加
四、输入如下程序
#include stdio.h
int main()
{
int a,b,A,B;
int lol,lpl;
printf ("输入两个整数:\n");
scanf ("%d%d",a,b);
A=a;
B=b;
if(B)
while((A %= B) (B %= A));
lol = A+B;
lpl = a*b/lol;
printf ("最小公倍数为:%d\n", lpl);
return 0;
}
五、按键Ctrl+F5开始执行(不调试),输入两个整数之间用空格隔开,回车即可得到两个整数的最小公倍数
扩展资料:
辗转相除法, 又名欧几里德算法(Euclidean algorithm),是求最大公约数的一种方法。
它的具体做法是:用较大数除以较小数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。如果是求两个数的最大公约数,那么最后的除数就是这两个数的最大公约数。
两个数的最大公约数是指能同时整除它们的最大正整数。
设两数为a、b(a2b),求a和b最大公约数(a,b)的步骤如下:
(1)用a除以b(a2b),得a÷b=q..n(0≤n)。
(2)若rn=0,则(a,b)=b;
(3)若r10,则再用b除以n,得b÷n=q..2(0sr2)
(4)若r2=0,则(a,b)=rn;若r20,则继续用r1除以r2,.…,如此下去,直到能整除为止。
其最后一个余数为0的除数即为(a,b)的最大公约数。