d693

輸入說明 :

每組測試資料兩行

第一行有一整數 N ( 2 ≤ N ≤ 10 )

第二行包含 N 個正整數 ( 每個數 ≤ 100 )

當 N 為 0 時請結束程式

輸出說明 :

每組測試資料輸出一行

請輸出 N 個正整數的最小公倍數

答案保證小於 231-1

最小公倍數就是兩數相乘,在除以最大公因數

這題比較重要的地方是for迴圈裡面,要先除以gcd,不然會overflow

 #include<stdio.h>
int gcd(int a, int b)
{
    int temp;
    while(a%b)
    {
        temp = a%b;
        a = b;
        b = temp;
    }
    return b;
}

int main()
{
    int n;    
    int i;
    while(scanf("%d",&n)&&n)
    {
        int ans = 1;
        int temp;

        for(i=0;i<n;i++)
        {
            scanf("%d",&temp);
            ans = ans/gcd(temp,ans)*temp; 
        }
        printf("%d\n",ans);
    }
}