当前位置:首页 » 编程语言 » c语言求两个整数的最大公约数和最小公倍数
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言求两个整数的最大公约数和最小公倍数

发布时间: 2023-05-29 01:02:30

1. c语言编程求输入两个数的最大公约数和最小公倍数,怎么做

输入两个正整数m和n,求其最大公约数和最小公倍数.用辗转相除法求最大公约数 算法描述:m对n求余为a,若a不等于0 则 m 0)
{
m_cup = m;

#include<stdio.h>

voidmain()

{

intm,n,m1,n1,t;

printf("请输入两个数(用空格隔开):");

scanf("%d%d",&m,&n);

if(n>m)

{

t=m;

m=n;

n=t;

}

m1=m;

n1=n;

while(n!=0)

{

t=m%n;

m=n;

n=t;

}

printf("%d和%d的最大公约数是:%d ",m1,n1,m);

printf("最小公倍数是:%d ",m1*n1/m);

}

2. c语言编程,求两个数的最大公约数和最小公倍数

这样写:
#include
void
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;
r=m%n;
}
printf("最大公约数是:%d
\n",n);
}
图:

3. 用C语言求两个数的最大公约数和最小公倍数

你可以编写一个程序,实现辗转相除法(欧几里得算法),来求得最大公约数,然后用两个数相乘再除以最大公约数来,得到最小公倍数。

#include
<stdio.h>

int
main()
{

int
a,
b,
c;
//a,
b就是M和N,c是余数

int
ta,
tb;
//用来记录a,b的临时值

int
maxgys,mingbs;

printf("请输入两个数:
");

scanf("%d%d",&a,&b);

ta
=
a;
tb
=
b;

if(ta
>
tb)
{ta
=
b;
tb
=
a;}

c
=
tb
%
ta;

while(c!=
0)
{

tb
=
ta;
//辗转相除的过程

ta
=
c;

c
=
tb
%
ta;

}

printf("%d和%d的最大公约数是:
%d\n",
a,
b,
ta);

printf("%d和%d的最小公倍数是:
%d\n",
a,
b,
a
*
b
/
ta);

return
0;
}

4. C语言函数编写,求两个整数的最大公约数和最小公倍数

编写该程序的整体思路:分别定义最大公约数函数和最小公倍数函数,然后再main函数里面调用它。C语言实现代码如下:

#include<stdio.h>

#include<math.h>

intfun_gy(int,int); //声明最大公约数函数

intfun_gb(int,int); //声明最小公倍数函数

main()

{

inta,b,gy,gb;

printf("输入两个整数: ");

scanf("%d%d",&a,&b);

gy=fun_gy(a,b); //调用最大公约数函数

gb=fun_gb(a,b); //调用最小公倍数函数

printf("最大公约数是:%d 最小公倍数是:%d ",gy,gb);

}

intfun_gy(intx,inty)

{

intz,i;

if(x>y)

z=sqrt(y);

else

z=sqrt(x);

for(i=z;i>=1;i--)

{

if(x%i==0&&y%i==0)

break;

}

returni;

}

intfun_gb(intx,inty)

{

intz,i;

z=x*y;

for(i=x;i<=z;i++)

{

if(i%x==0&&i%y==0)

break;

}

returni;

}

程序运行结果:

(4)c语言求两个整数的最大公约数和最小公倍数扩展阅读:

这里涉及到了最大公约数和最小公倍数的计算方法:

我们知道两个整数的最小公倍数等于他们的乘积除以他们的最大公约数。所以关键还是最大公约数的计算。

辗转相除法(求最大公约数):

假设求a,b的最大公约数,则:

(1)a除以b取余得c,若c=0,则b即为两数的最大公约数,输出,结束。

(2)若c != 0,则将b赋给a,c赋给b再返回上一步操作,继续执行。

例如,求30和98的最大公约数,过程如下:

90%30 = 8;

30%8 = 6;

8%6 = 2;

6%2 = 0;

所以最大公约数为2。

5. 用c语言编程输入两个整数,求其最大公约数和最小公倍数

#include"stdio.h"
main()
{
饥段渣烂悄intm,n,t,h,a,b,q;
printf("输入m,n的值:");
scanf("燃春%d%d",&m,&n);
a=m;
b=n;
if(n>m)
{t=m;m=n;n=t;}
while(m%n!=0)
{h=n;n=m%n;m=n;}
a=a/n;b=b/n;q=a*b*n;
printf("两数最大公约数为%d,最小公倍数为%d ",n,q);
}

6. 2个数的最大公约数和最小公倍数 C语言怎么求

输入两个正整数m和n,
求其最大公约数和最小公倍数.
<1>
用辗转相除法求最大公约数
算法描述:
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
(m
>
0
&&
n
>0)
{
m_cup
=
m;
n_cup
=
n;
res
=
m_cup
%
n_cup;
while
(res
!=
0)
{
m_cup
=
n_cup;
n_cup
=
res;
res
=
m_cup
%
n_cup;
}
printf("Greatest
common
divisor:
%d\n",
n_cup);
printf("Lease
common
multiple
:
%d\n",
m
*
n
/
n_cup);
}
else
printf("Error!\n");
return
0;
}

关于辗转相除法,
搜了一下,
在我国古代的《九章算术》中就有记载,现摘录如下:
约分术曰:“可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也。以等数约之。”
其中所说的“等数”,就是最大公约数滑乎纤。求“等数”的办法是“更相减损”法,实际上就是辗转相除法。
辗转相除法求最大公约数,是一种比较好的方法,比较快。
对于52317和75569两个数,你能迅速地求出它们的最大公约数吗?一般来说你会找一找公共的使因子,这题可麻烦了,不好找,质因子大。
现在教你用辗转相除法来求最大公约数。
先用较大的75569除以52317,得商1,余数23252,再以52317除以23252,得商2,余数是5813,再用23252做被除数,5813做除数,正好除尽得商数4。这样5813就是75569和52317的最大公约数。你要是用分解使因数的办法,肯定找不到。
那么,这辗转相除法为什么能得到最大公约数呢?下面我就给大伙谈谈。
比如说有要求a、b两个整数的最大公约数,a>b,那么我们先用a除以b,得到商8,余数r1:a÷b=q1…r1我们当然也可以把上面这个式子改写成乘法式:a=bq1+r1------l)
如果r1=0,那么b就是a、b的最大公约数3。要是r1≠0,就继续除,用b除以r1,我们也可以有和上面一样的式子:
b=r1q2+r2-------2)
如果余数r2=0,那么r1就是所求的最大公约数3。为什么呢?因为如果顷启2)式变成了b=r1q2,那么b1r1的公约数就一定是a1b的公约数。这是因为一个数能同时除尽b和信仿r1,那么由l)式,就一定能整除a,从而也是a1b的公约数。
反过来,如果一个数d,能同时整除a1b,那么由1)式,也一定能整除r1,从而也有d是b1r1的公约数。
这样,a和b的公约数与b和r1的公约数完全一样,那么这两对的最大公约数也一定相同。那b1r1的最大公约数,在r1=0时,不就是r1吗?所以a和b的最大公约数也是r1了。
有人会说,那r2不等于0怎么办?那当然是继续往下做,用r1除以r2,……直到余数为零为止。
在这种方法里,先做除数的,后一步就成了被除数,这就是辗转相除法名字的来历吧。

7. [C语言]编程:输入两个正整数,求其最大公约数和最小公倍数

程序如下:
main(){
int a,b,r,gcd,lcm;
printf("请输入两个正整数:");
scanf("%d%d",&a,%b);
while(r=a%b){
a=b;
b=r;
}
gcd=b;
lcm=a*b/gcd;
printf("gcd=%d,lcm=%d\n",gcd,lcm);
}
就是这样。
有什么问题请留言。