计算各种数字的巨大最小公倍数并将其打印为素数

Calculating a huge least common multiple of various numbers and printing it modulo a prime

我参加了一个编程竞赛,我需要计算一百万个数字的排列顺序。当然一个排列的阶数只是循环长度的最小公倍数。

因此问题归结为:给定一些加起来为一百万的整数,我需要计算它们的最小公倍数。当然,最小公倍数可能很大。该问题要求我打印答案 mod 10^9+7,这是一个质数。我怎样才能做到这一点?

我不确定如何,因为每次计算都减少结果会使我无法计算最小公倍数。

需要说明的是,我知道如何计算最小公倍数,因为它只是数字除以最大公因数的乘积,使用欧氏算法计算最大公因数很简单。

非常感谢您。

计算 LCM 的质因数分解,然后将所有这些质数相乘 mod 10^9+7:

long modulus = 1000000007
long product = 1;
for (long prime : primes) {
    product = (product * prime) % modulus;
}