C语言中,求两个数的最小公倍数,的“高效”算法是?

如题所述

这思路我自己想的,但是我也说不太明白,反正我知道怎么回事
1先判断大数%小数是不是0,是0那么大数就是最小公倍数
2不是的话,让大数%小数得到一个数,让小数%得到的数,如果得0
那么让大数*(小数/(大数%小数)),得到得数是最小公倍数
3如果2中小数%得到的这个数不等于0,那么恭喜你,这两个数的最小公倍数就是:大数*小数
4如果这两个数相等,那么,随便一个都是最小公倍数
纯手打,今天刚好做这个题,看到网上没什么答案,我就写写我的思路
C++语法如下:
int pd(int A,int B);
int main() {int i, k;goto C;
C: {
printf("第一个数:"); scanf("%d", &i);
printf("第二个数:"); scanf("%d", &k);
printf("这两个数的公倍数为:%d\n\n", pd(i, k));
goto C; }
return 0;
}
int pd(int A, int B) {
int P;
if (A > B) {
if (A%B == 0) { P = A; }
else if (B % (A%B) == 0) { P = A*(B / (A%B)); }
else { P = A*B; }
}
else if (B > A) {
if (B%A == 0) { P = B; }
else if (A % (B%A) == 0) { P = B*(A / (B%A)); }
else { P = B*A; }
}
else { P = A; }
return P;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-11-25
不知道是不是最高效的,应该还可以
c++语言的如下:
#include<iostream>
using namespace std;
int main()
{
int a,b;
cin >> a >> b;
if(a > b)
{
int temp = a;
a = b;
b = a;
}
int i = 1;
while(!(b * i % a == 0))
i++;
cout << i * b << endl;
return 0;
}
就是先找到两个数的较大的一个,然后依次枚举较大数的一倍,两倍,三倍,知道找到最小公倍数!本回答被网友采纳
第2个回答  推荐于2017-10-14
这个C程序可同时求出最小公倍数和最大公约数,最小公倍数等于这2个数的乘积除以最大公约数。最大公约数的算法基本不能再简了,在此值上再做一次乘和除就得到最小公倍数了。
void main()
{
int r,t,numa,numb,p;
printf("please input two numbers:\n");
scanf("%d,%d",&numa,&numb);
/*把输入的2个数中大数存在numa中*/
if(numa<numb)
{ t=numa; numa=numb; numb=t; }
p=numa*numb;
/*求2数的最大公约数,保存在numa中*/
while(m!=0)
{
r=numa%numb;
numa=numb;
numb=r;
}
printf("最小公倍数是:%d",p/numa);
}本回答被提问者采纳

C语言中,求两个数的最小公倍数,的“高效”算法是?
1先判断大数%小数是不是0,是0那么大数就是最小公倍数 2不是的话,让大数%小数得到一个数,让小数%得到的数,如果得0 那么让大数*(小数\/(大数%小数)),得到得数是最小公倍数 3如果2中小数%得到的这个数不等于0,那么恭喜你,这两个数的最小公倍数就是:大数*小数 4如果这两个数相等,...

C语言如何求两个数的最大公约数和最小公倍数
printf("最小公倍数=%d\\n",lcm(a,b));return 0;}

c语言求两个数的最小公倍数
C语言中可以使用欧几里得算法(辗转相除法)、穷举法来求两个数的最小公倍数。欧几里得算法的基本思想是,用较大的数除以较小的数,将得到的余数作为新的被除数,原来的除数作为新的除数,继续进行相同的操作,直到余数为0,此时最后的除数就是最小公倍数。穷举法是枚举所有小于等于两数乘积的正整数,判...

C语言:求两数的最小公倍数
printf("最大公约数是%d\\n最小公倍数是%d\\n",n,p\/n);}

怎样用C 编写程序求两个数的最小公倍?
为了用C语言编写程序求两个数的最小公倍数,我们首先需要了解最小公倍数的定义。最小公倍数是指能够同时整除两个数的最小的正整数。接下来,我们逐步分解代码实现过程。代码的开始部分,包含了头文件。`#include `用于处理输入输出操作,而`#include `虽然在本程序中并未直接使用,但通常用于其他可能...

用C语言编写程序求两个数的最小公倍数,并输出
如图使用辗转相除法求最小公倍数:方法步骤:一、打开VC2010(或其他C语言编译器),新建项目-选择Win32为控制台应用程序-命名-确定 二、选择源文件-添加-新建项 三、选择C++文件-命名.c-添加 四、输入如下程序 include <stdio.h> int main(){ int a,b,A,B;int lol,lpl;printf ("输入两个...

用C语言如何编写如下程序:求两个数的最大公约数和最小公倍数.并说明...
include "stdio.h"include "maths.h"main(){int a,b,c,k,s;scanf("%d,%d",a,b);c=a;if(b<a) c=b;for(int i=1;i<=c;i++){ if((a%i==0&&b%i==0))k=i;}\/* k是最大公约数*\/ printf("%d",k);s=a*b\/k;\/* s是最小公倍数*\/ } ...

c语言编程,求两个数的最大公约数和最小公倍数
main(){ int m,n,i,r,temp;printf("请输入第一个数的值:");scanf("%d",&m);printf("请输入第二个数的值:");scanf("%d",&n);if(n>m){ temp=m;m=n;n=temp;} i=n;while(i%m!=0){ i=i+n;} printf("最小公倍数是:%d \\n",i);r=m%n;while(r!=0){ m=n;n=r...

C语言——求最大公约数和最小公倍数的简单程序
本文讲解一下利用C语言求两个数字的最大公约数以及最小公倍数的方法。首先打开编译器,这里用的是VC++6.0,然后新建工程,选择下方的控制台应用程序,也就是“win32 console application”。然后新建一个文件,选择“C++ source file”,然后输入文件名,点击确定。接着输入如图所示的代码,注意检查看有...

2个数的最大公约数和最小公倍数 C语言怎么求?
算法描述:m对n求余为a,若a不等于0 则 m <- n,n <- a,继续求余 否则 n 为最大公约数 <2> 最小公倍数 = 两个数的积 \/ 最大公约数 include int main(){ int m,n;int m_cup,n_cup,res;\/*被除数,除数,余数*\/ printf("Enter two integer:\\n");scanf("%d d",&m,&n);if...

相似回答