滿意答案
flywisdom
2019.06.20
采納率:44%????等級:9
已幫助:1064人
main()
{
int p,r,n,m,temp;
printf("Please enter 2 numbers n,m:");
scanf("%d,%d",&n,&m);//輸入兩個正整數.
if(n
{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。
00分享舉報