1. 程式人生 > >hdu2028多個數的最小公倍數

hdu2028多個數的最小公倍數

題目描述:
Problem Description
求n個數的最小公倍數。

Input
輸入包含多個測試例項,每個測試例項的開始是一個正整數n,然後是n個正整數。

Output
為每組測試資料輸出它們的最小公倍數,每個測試例項的輸出佔一行。你可以假設最後的輸出是一個32位的整數。

Sample Input
2 4 6
3 2 5 7

Sample Output
12
70

程式碼如下:

#include <bits/stdc++.h>
using namespace std;                    //最小公倍數=兩整數的乘積÷最大公約數
int gcd(int a,int
b){ return b==0?a:gcb(b,a%b);} int main() { int n; while(cin>>n) { long int a[50]={0}; for(int i=0;i<n;i++) cin>>a[i]; for(int i=0;i<n-1;i++) a[i+1]=a[i]/(gcd(a[i],a[i+1]))*a[i+1]; //不能用a[i]*a[i+1]/(max_GY(a[i],a[i+1])),因為那個會超過int
cout<<a[n-1]<<endl; } return 0; }

來總結一下:
1)最小公倍數=兩整數的乘積÷最大公約數。
2)不能讓兩個數先乘再除另一個數,乘完之後可能會超過int的範圍。