C語言實現之最大公約數和最小公倍數

題目:從鍵盤輸入兩個正整數 a 和 b,求其最大公約數和最小公倍數。

算法思想:

利用格式輸入語句將輸入的兩個數分別賦給 a 和 b,然後判斷 a 和 b 的關係,如果 a 小於 b,則利用中間變量 t 將其互換。再利用輾轉相除法求出最大公約數,進而求出最小公倍數。

輾轉相除法

有兩整數a和b:

  1. a%b得餘數r
  2. 若r=0,則b即爲兩數的最大公約數
  3. 若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;
}

效果如圖:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章