程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C實現最大公約數和最小公倍數

C實現最大公約數和最小公倍數

編輯:關於C語言

題目:C實現最大公約數和最小公倍數。

分析:

      原文鏈接:http://www.baidu.com/p/csg974?from=zhidao

反過來從已知兩個整數思考,

拿30和18舉例,分解質因數,

30=2*3*5

18=2*3*3



兩者相同的部分是2*3,不同的部分是5和3。

所謂的最大公約數,就是指的這個相同的部分,它同時被兩個整數包含在內,是兩個整數共同的約數,所以是公約數,而且是最大的那個,因為你把所有相同的部分都取出來了。

所以30和18的最大公約數就是2*3=6。



而最小公倍數是什麼呢,是兩個整數的共有的倍數,就是既能包括第一個整數,也能包括第二個整數。

那麼怎樣包含呢?首先兩者相同的部分2*3必須算上,然後要包含第一個整數,那就必須再算上兩者不同的部分5,要包含第二個整數,就要包含第二個整數的那個不同的部分3。

所以最小公倍數就是最大公約數(相同部分)*第一個數的不同部分*第二個數的不同部分。這樣就可以被兩個整數同時整除了。而且也是最小的公倍數,再比它少一點就不能被某個整數整除了。

當然,兩個整數相乘的話,也是公倍數,但這樣相同部分就乘了2次,所以不是最小的。只有當兩個整數最大公約數為1即互質的時候,就沒有相同部分了,這時乘積就是最小公倍數。



所以回頭看你這個題目。

最小公倍數÷最大公約數,結果就是算出兩者不同的那部分。

然後把這個不同的部分分成兩部分的乘積,再分別乘到最大公約數上,

就算出這兩個整數。



要注意的是,把那個不同部分分成兩部分的時候,不要把同樣的質因數分到兩邊。

比如說不同的部分是3*5*5,那你就不能分成3*5和5,因為這樣5就屬於相同部分了,不屬於不同部分,那樣最大公約數和最小公倍數就變了,不可以的。

只能分成1和3*5*5,3和5*5。總之讓相同的質因數放在相同的一邊就好。

 

代碼實現:

 

 #include<stdio.h>
 #include<math.h>
                           printf(     scanf(,&n1,&     total=n1*     (n1<          temp=         n1=         n2=  
     ((a=(n1%n2)!=          n1=         n2=      printf(     printf(,total/ 
 
 
 }

 

 

結果截圖:

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved