C語言:寫兩個函式,分別求兩個最大公約數和最小公倍數
阿新 • • 發佈:2019-01-23
題目:寫兩個函式,分別求兩個整數的最大公約數和最小公倍數,用主函式呼叫這個兩個函式,並輸出結果。兩個整數由鍵盤輸入
分析:求最大公約數,需要用到輾轉相除法:
輾轉相除法:設兩數為a、b(a>b),求a和b最大公約數(a,b)的步驟如下:用a除b,得a÷b=q……r1(0≤r1)。若r1=0,則(a,b)=b;若r1≠0,則再用b除r1,得b÷r1=q……r2 (0≤r2).若r2=0,則(a,b)=r1,若r2≠0,則繼續用r1除r2,……如此下去,直到能整除為止。其最後一個非零除數即為(a,b)。
程式碼:
#include<stdio.h>
void main(){
int maxComDivisor(int ,int );
int minComMultiple(int ,int );
int m,n;
printf("enter two numbers : \n");
scanf("%d %d",&m,&n);
printf("最大公約數為 %d\n",maxComDivisor(m,n));
printf("最小公倍數 %d\n",minComMultiple(m,n));
return 0;
}
int maxComDivisor(int x,int y){
int temp,p;
if(x<y){
temp = y ;
y = x ;
x =temp;
}
while(y!=0){
p = x%y;
x = y;
y = p;
}
return x;
}
int minComMultiple(int x ,int y){
int p,min,multiple;
multiple = x*y;
p = maxComDivisor(x,y);
min = multiple/p;
return min ;
}