记录
求两个数的最小公倍数:lcm=a*b/gcd(a,b);
求一组数据的最小公倍数:
ll lcm(int n)
{
int num;
for(int i=0; i<n-1; i++)
{
num=__gcd(s[i],s[i+1]);
s[i+1]=s[i]/num*s[i+1];
}
return s[n-1];
}
算法思想
2 4的最小公倍数可以=2*4➗gcd(2,4)=4
但是2 4 8的的最小公倍数却 !=2 * 4 * 8 ➗ gcd(2,4,8)=32 != 8(真正答案)
但可以看成先求 2 4的最小公倍数 4,保存 4,而后求 4 8 的最小公倍数 8
s[i+1]=s[i]/num*s[i+1]; 可以看成 s[i+1]=s[i]*s[i+1]/num;
不过后者会爆范围。
Over.