hdu2028多個數的最小公倍數
阿新 • • 發佈:2018-12-22
題目描述:
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的範圍。