題目:從鍵盤輸入兩個正整數 a 和 b,求其最大公約數和最小公倍數。
算法思想:
利用格式輸入語句將輸入的兩個數分別賦給 a 和 b,然後判斷 a 和 b 的關係,如果 a 小於 b,則利用中間變量 t 將其互換。再利用輾轉相除法求出最大公約數,進而求出最小公倍數。
輾轉相除法
有兩整數a和b:
- a%b得餘數r
- 若r=0,則b即爲兩數的最大公約數
- 若r≠0,則a=b,b=r,再回去執行1
代碼:
#include <stdio.h>
int main(){
int a,b,t,r,n;
printf("請輸入兩個數字: ");
scanf("%d,%d",&a,&b);
if(a<b){
t=a;
a=b;
b=t;
}
r=a%b;
n=a*b;
while(r!=0){
a=b;
b=r;
r=a%b;
}
printf("這兩個數的最大公約數是 %d, 最小公倍數是 %d\n",b,n/b);
return 0;
}
效果如圖: