發布時間:2011-09-16 共1頁
1: /*輾轉相除法基于如下原理:兩個整數的最大公約數等于其中較小的數和兩數的差的最大公約數。
2: 例如,252和105的最大公約數是21(252 = 21 × 12;105 = 21 × 5);
3: 因為252 ? 105 = 147,所以147和105的最大公約數也是21。在這個過程中,較大的數縮
4: 小了,所以繼續進行同樣的計算可以不斷縮小這兩個數直至其中一個變成零。這時,所剩下的
5: 還沒有變成零的數就是兩數的最大公約數。
6: */
7: #include <stdio.h>
8:
9: int getGCDAndLCM(int a,int b){
10: int max=a>b?a:b;//將較大的數賦給max
11: int min=(max=a)?b:a;//將較小的數賦給min
12: int temp;//暫時存儲變量
13: while(max!=0){
14: temp=min%max;
15: min=max;
16: max=temp;
17: }
18: printf("最大公約數為%d\n",min);
19: printf("最小公倍數為%d\n",a*b/min);
20: }
21:
22: int main(){
23: printf("輸入兩個數整數值\n");
24: int a,b;
25: scanf("%d",&a);
26: scanf("%d",&b);
27: getGCDAndLCM(a,b);
28: return 0;
29: }