三個正整數a,b,c的最大公約數為p,記作:(a,b,c)=p;最小公倍數為q,記作:[a,b,c]=q.
例.求18,24,36的最大公約數及最小公倍數。
解法一、用短除法:
1)求最大公約數:
2)求最小公倍數:
接着上面對3,4,6繼續用短除法:
解法二、先求出其中兩個數的最大公約數p和最小公倍數q,再求p與第三個數的最大公約數,以及q與第三個數的最小公倍數:
1)求最大公約數:因為(18,24)=6,又因為(6,36)=6,所以(18,24,36)=6.
2)求最小公倍數:因為[18,24]=72,又因為[72,36]=72,所以[18,24,36]=72
用C語言編程如下:
//求三個數a,b,c的最大公約數p及最小公倍數q,記作:p=(a,b,c),q=[a,b,c]
#include <stdio.h>
int main ()
{ int gys(int,int); //函數原型:求最大公約數
int a,b,c,p,q;
printf("請輸入三個整數:a b c(相互用空格隔開):"); scanf("%d %d %d",&a,&b,&c);
p=gys(a,b);//調用函數:求a,b的最大公約數p
q=a*b/p; //求a,b的最小公倍數q(注:因兩個數a,b的最大公約數p與它們的最小公倍數q之積pq,等于這兩個數之積ab)
p=gys(p,c);//求p,c的最大公約數(也即a,b,c的最大公約數)仍用p表示
printf("(%d,%d,%d)=%d, ",a,b,c,p); //輸出三個數的最大公約數
p=gys(q,c);//求q,c的最大公約數p
printf(" [%d,%d,%d]=%d",a,b,c,q*c/p); //輸出三個數的最小公倍數
}
//求最大公約數函數:
int gys(int x,int y) //x,y為形參
{ int r=1;//使循環能進行
while(r!=0) //輾轉相除:
{ r=x%y;//求餘
x=y;y=r;//輾轉
}
return (x); //返回最大公約數x
}
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!