當前位置:首頁 » 編程語言 » 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);
}
就是這樣。
有什麼問題請留言。