求n个数的最小公倍数
!!注意!!
1.要知道一个公式:x*y=最小公倍数(lcm)*最大公因数(gcd) 那么这里可以用这个公式得出 lcm=x/最大公因数(gcd)*y
2.自己编写gcd函数
(其实本来有__gcd()函数的,但不知道为啥过不了)
gcd函数代码如下,返回最大公因数:
long long gcd(long long b,long long c)
{
if(c==0) return b;
else return gcd(c,b%c);
}
3.求最小公倍数,代码如下:
for(i=1;i<n;i++)
{
b=b/gcd(b,a[i])*a[i];
}
一开始是要设置 b=a[0] 的
这里其实有递归的思想,就是第一次先求开头两个数的最小公倍数,再用这个求出的最小公倍数去和第三个数求最小公倍数。如此循环往复。
完整代码如下:
#include <iostream>
#include <algorithm>
using namespace std;
long long gcd(long long b,long long c)
{
if(c==0) return b;
else return gcd(c,b%c);
}
int main()
{
long long b,i,n;
long long a[1001];
while(cin>>n)
{
for(i=0;i<n;i++)
{
cin>>a[i];
}
b=a[0];
if(n==1)
{
cout<<b;
continue;
}
for(i=1;i<n;i++)
{
b=b/gcd(b,a[i])*a[i];
}
cout<<b<<endl;
}
}