C語言最大公約數和最小公倍數

2020-07-16 10:04:30
從鍵盤輸入兩個正整數 a 和 b,求其最大公約數和最小公倍數。

演算法思想

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

程式程式碼

#include <stdio.h>
int main()
{
    int a,b,c,m,t;
    printf("請輸入兩個數:n");
    scanf("%d%d",&a,&b);
    if(a<b)
    {
        t=a;
        a=b;
        b=t;
    }
    m=a*b;
    c=a%b;
    while(c!=0)
    {
        a=b;
        b=c;
        c=a%b;
    }
    printf("最大公約數是:n%dn",b);
    printf("最小公倍數是:n%dn",m/b);
}

偵錯執行結果

當輸入的兩個數為 15 和 65 時,列印出的結果如下所示:

請輸入兩個數:
15 65
最大公約數是:
5
最小公倍數是:
195

當輸入的兩個數為 16 和 72 時,列印出的結果如下所示:

請輸入兩個數:
16 72
最大公約數是:
8
最小公倍數是:
144

總結

範例中用到了輾轉相除法來求最大公約數。在求最小公倍數時要清楚最大公約數和最小公倍數的關係,即兩數相乘的積除以這兩個數的最大公約數就是最小公倍數。