***问题:
Problem Description
求n个数的最小公倍数。
Input
输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数。
Output
为每组测试数据输出它们的最小公倍数,每个测试实例的输出占一行。你可以假设最后的输出是一个32位的整数。
Sample Input
2 4 6
3 2 5 7
Sample Output
12
70***
代码:
#include<iostream>
#include<algorithm>
using namespace std;
int cmp(int a,int b){
return a>b;
}
int gcd(int a,int b){
if(a%b==0){
return b;
}else
return gcd(b,a%b);
}
int lcm(int a,int b){
if(a==0&&b==0){
return 0;
}
else if(a==0){
return b;
}else if(b==0){
return a;
}else return (a*b)/(gcd(a,b));
}
int main(){
int n;
int a[101];
int res;
while(scanf("%d",&n)!=EOF){
for(int i=0;i<n;i++){
cin>>a[i];
}
sort(a,a+n,cmp);
int c=a[0];
for(int i=1;i<n;i++){
c=lcm(c,a[i]);
}
cout<<c<<endl;
}
return 0;
}
**分析:这里注意__gcd函数会出现编译错误就自己手写。其次最好是让数组的数从大到小先进行排序,否则会出现错误 **