首页
/
每日頭條
/
生活
/
求三個互質的數的最小公倍數
求三個互質的數的最小公倍數
更新时间:2024-11-17 19:16:19

三個正整數a,b,c的最大公約數為p,記作:(a,b,c)=p;最小公倍數為q,記作:[a,b,c]=q.

例.求18,24,36的最大公約數及最小公倍數。

解法一、用短除法:

求三個互質的數的最小公倍數(求三個數的最大公約數及最小公倍數)1

1)求最大公約數:

  1. 先用18,24,36的公因數2去除:18除以2得9,24除以2得12,36除以2得18,三個數成為:9,12,18.
  2. 再用9,12,18的公因數3去除:9除以3得3,12除以3得4,18除以3的6,三個數成為:3,4,6.此時3,4,6再沒有大于1的公因數。所以,18,24,36的最大公約數為:2*3=6.即(18,24,36)=6.

2)求最小公倍數:

接着上面對3,4,6繼續用短除法:

  1. 用4和6的公因數2去除:3不能被2整除挪下來,4除以2得2,6除以2得3,三個數成為:3,2,3.
  2. 再用3和3的公因數3去除:3除以3得1,2不能被3整除挪下來,3除以3得1,三個數成為:1,2,1.此時它們兩兩都沒有大于1的公因數啦,短除法結束。
  3. 把所有公因數(包括三個數的公因數2,3,兩個數的公因數2,3)以及最後的商1,2,1相乘:2*3*2*3*1*2*1=72.得到18,24,36的最小公倍數為:[18,24,36]=72.

解法二、先求出其中兩個數的最大公約數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

}

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
Copyright 2023-2024 - www.tftnews.com All Rights Reserved