1:几个数的最小公倍数
方法一:
从前往后递推每次就求两个,再把求出来的结果跟下一个求(具体就是) a x b / gcd(a,b)
方法二:
算出所有数的质因子然后把每个出现的质因子取最高次幂相乘就可以了
如下为所有合数的最小公倍数
bool is_pri(int x)
{
for(int i = 2 ;i <= x / i; i )
if(x % i == 0) return false ;
return true;
}
void solve()
{
int a , b;
cin >> a >> b;
long long res = 1;
int w;
for(int i = a ; i <= b ;i )
{
if(is_pri(i)) continue;
w = i;
for(int j = 2 ; j * j <= w ;j )
{
int s = 0;
while(w % j == 0)
{
s ;
w /= j;
}
cnt[j] = max(cnt[j] , s);
}
if(w != 1) cnt[w] = max(cnt[w] , 1);
}
// for(int i = 0 ;i <= 6 ; i ) cout << cnt[i] << endl;
for(int i = 2 ;i <= 20000 ;i )
{
if(is_pri(i))
{
while(cnt[i] –)
{
res = (LL)res * i % mod1;
}
}
}
if(res == 1)
cout << “-1”;
else
cout << res <<endl;
}
```