原创作品 转载请注明出处http://blog.youkuaiyun.com/always2015/article/details/45533095
这道题主要在于怎么求出最小公倍数:想在网上找了一个“相对比较高效”的算法,核心还是这个公式:两数乘积=两数最大公约数*两数最小公倍数。
只不过这次用到的是 两数最小公倍数=两数乘积/两数最大公约数。每两个数个一组依次向后求就可以了。
我的AC代码如下:
#include <iostream>
using namespace std;
int gcd(int a,int b)
{
if(b==0)return a;
else return gcd(b,a%b);
} //递归法求最大公约数
int main(void)
{
unsigned int n,*input_str,max_mutiple_num;
while(cin>>n)
{
input_str=new unsigned int[n];
for(int i=0; i<n; i++)
cin>>input_str[i];
//刚开始将最小公倍数设为第一个数
max_mutiple_num=input_str[0];
//两两求最小公倍数
for(int j=0; j<n; j++)
max_mutiple_num=(input_str[j]*max_mutiple_num)/gcd(input_str[j],max_mutiple_num);
cout <<max_mutiple_num << endl;
delete input_str;
}
return 0;
}