用C语言编写程序求两个数的最小公倍数,并输出
如图使用辗转相除法求最小公倍数:
方法步骤:
一、打开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)的最大公约数。
#include <stdio.h>
#include <stdlib.h>
int zxgb(int a,int b)
{
int i;
for(i=1;a*i%b;++i);
return a*i;
}
int main()
{
int a,b;
printf("请输入两个正整数:");
scanf("%d%d",&a,&b); //楼上这一句错了
if(a*b==0) { printf("你输入的数据不正确!"); exit(0);} //防止输入0
printf("%d和%d的最小公倍数是:%d\n",a,b,zxgb(a,b)); //楼上这里用判断语句多余了
return 0;
}
#include <stdlib.h>
int zxgb(int a,int b)
{
int i;
for(i=1;a*i%b;++i);
return a*i;
}
int main()
{
int a,b;
printf("请输入两个正整数:");
scanf("%d%d",&a,&b); //楼上这一句错了
if(a*b==0) { printf("你输入的数据不正确!"); exit(0);} //防止输入0
printf("%d和%d的最小公倍数是:%d\n",a,b,zxgb(a,b)); //楼上这里用判断语句多余了
return 0;
}
#include<stdio.h>
int main(void)
{
int m, n, a, b, c;
scanf("%d%d",&m, &n);
a = m;
b = n;
while(b)
{
c = a % b;
a = b;
b = c;
}
printf("%d\n", m * n / a);
return 0;
}
以上代码中a是最大公因数,两数相乘除以a就是最小公倍数。