当前位置:首页 » 编程语言 » C语言求最小的的公倍数

C语言求最小的的公倍数

发布时间: 2023-06-06 05:13:50

c语言编程:从键盘输入两个数,求它们的最小公倍数

main()
{
int p,r,n,m,temp;
printf("Please enter 2 numbers n,m:");
scanf("%d,%d",&n,&m);//输入两个正整数.
if(n<m)//把大数放在n中,把小数放在m中.
{temp=n;
n=m;
m=temp;
}
p=n*m;//P是原来两个数n,m的乘积.
while(m!=0)//求两个数n,m的最大公约数.
{
r=n%m;
n=m;
m=r;
}
printf("Its MAXGongYueShu:%d\n",n);//打印最大公约数.
printf("Its MINGongBeiShu:%d\n",p/n);打印最小公倍数.
基本原理如下:
用欧几里德算法(辗转相除法)求两个数的最大公约数的步骤如下:
先用小的一个数除大的一个数,得第一个余数;
再用第一个余数除小的一个数,得第二个余数;
又用第二个余数除第一个余数,得第三个余数;
这样逐次用后一个数去除前一个余数,直到余数是0为止。那么,最后一个除数就是所求的最大公约数(如果最后的除数是1,那么原来的两个数是互质数)。
例如求1515和600的最大公约数,
第一次:用600除1515,商2余315;
第二次:用315除600,商1余285;
第三次:用285除315,商1余30;
第四次:用30除285,商9余15;
第五次:用15除30,商2余0。
1515和600的最大公约数是15。
两个正整数的最小公倍数=两个数的乘积÷两个数的最大公约数
由于两个数的乘积等于这两个数的最大公约数与最小公倍数的积。这就是说,求两个数的最小公倍数,可以先求出两个数的最大公约数,再用这两个数的最大公约数去除这两个数的积,所得的商就是两个数的最小公倍数。
例 求105和42的最小公倍数。
因为105和42的最大公约数是21,
105和42的积是4410,4410÷21=210,
所以,105和42的最小公倍数是210。

❷ C语言求最小公倍数怎么求

#include <stdio.h>
int GCD(int num1,int num2)
{
if (num1 % num2 == 0)
return num2;
else
return GCD(num2, num1 % num2);
}
int LCM(int a,int b)
{
int temp_lcm;
temp_lcm = a*b/GCD(a, b); //最小公倍数等于两数之积除以最大公约数
return temp_lcm;
}
int main()
{
int a,b;

while (scanf("%d%d",&a,&b)!= EOF)
{
printf("%d\n",LCM(a,b));
}
return 0;
}
先求出最大公约数,
最小公倍数由最大公约数转化过去
最大公约数由递归就可以出来了
望采纳谢谢

❸ c语言最小公倍数的求法

c语言最小公倍数的求法如下:

两个或多个整数公有的倍数叫做它们的公倍数,其中除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,这两个整数的最小公倍数一定大于等于它们的最大值,同时小于等于它们的积。按从小到大的顺序遍历整个范围内的所有整数,第一个公因数即为它们的最小公倍数。【不考虑负数,求负数的最小公倍数本就是无意义的(相当于求两个正数的最大公倍数)】

❹ c语言如何求最小公倍数

按照数学定义求。

最简单的 从较大数开始,一直累加出一个两个的共同倍数。

也可以先求最大公约数 然后用两个数的积除以最大公约数

intfunc(inta,intb)
{
intr;
for(r=a;;r++)
if(r%a==0&&r%b==0)break;
returnr;
}

❺ 如何用C语言求最小公倍数。。。

我代码复制给你看。

#include<stdio.h>
int GCD(int a,int b) //GCD表示最大公约数
{
int z= a<b?a:b; //我从输入的两个数中较小的那个开始判断是不是最大公约数,不是就一直-1
while(z>=1) // 直到找到能同时被X,Y整除的数,它就是最大公约数了。
{
if(a%z==0&&b%z==0) break;//最快满足这个条件的Z就是最大公约数
z--;
}
return z;
}
int LCM(int a,int b) //LCM表示最小公倍数
{
int z=a>b?a:b; //我从输入的两个数中最大的那个开始判断是不是最小公倍数,不是就一直+1
while(z<=(a*b)) //两个非零数a,b,我们知道a*b肯定是它的公倍数 ,所以从两个数的最大那个数开始
{ //一直到a*b肯定存在最小公倍数
if(z%a==0&&z%b==0)break; //最快满足这个条件的Z就是最小公倍数
z++;
}
return z;
}
int main()
{
while(1)
{
int x,y,z,d;
printf("请输入两个整数:");
scanf("%d %d",&x,&y);
z=GCD(x,y);
d=LCM(x,y);
printf("这两个数的最大公约数是%d\n",z);
printf("这两个数的最小公倍数是%d\n",d);
printf("\n");
}
}

❻ c语言求最小公倍数

1、首先介绍一下求最小公倍数的经典方法:

辗转相除法
有两整数a和b:
①a%b得余数c
②若c=0,则b即为两数的最大公约数
③若c≠0,则a=b,b=c,再回去执行①
a*b除以最大公约数等于最小公倍数


2、因此原问题也化为最小公倍数和最大公约数一起求了。程序的算法如下:

#include<stdio.h>


int lowest_common_multiple(int m,int n);

int main()

{

int m,n,c;


printf("请输入m的值: ");

scanf("%d",&m);

printf("请输入n的值: ");

scanf("%d",&n);

c=lowest_common_multiple( m, n);


printf("请输出最小公倍数c的值: ");

printf("%d ",c);


return 0;

}


int lowest_common_multiple(int m,int n)

{

int remainder,m1,n1;


m1=m;

n1=n;


while (n != 0) {

remainder = m % n;

m = n;

n = remainder;

}


//printf("输出最大公约数m: %d ", m); //此时的m为最大公约数


return m1*n1/m;

}

3、程序的输出如下:


4、此题注释的哪一个是输出最大公约数的。

热点内容
扁桃玩的服务器地址 发布:2025-05-17 12:18:25 浏览:507
u盘上传歌 发布:2025-05-17 12:14:51 浏览:612
入门c语言设计 发布:2025-05-17 12:08:31 浏览:40
c3算法 发布:2025-05-17 12:04:19 浏览:364
phprecv 发布:2025-05-17 11:55:00 浏览:610
福建时钟监控网关服务器云主机 发布:2025-05-17 11:54:28 浏览:248
c数据库压缩 发布:2025-05-17 11:39:22 浏览:960
安卓手机如何连接音响功放 发布:2025-05-17 11:37:48 浏览:959
破解exe加密视频 发布:2025-05-17 11:23:41 浏览:976
我的世界服务器圈太大了怎么办 发布:2025-05-17 11:15:21 浏览:615