计算各种数字的巨大最小公倍数并将其打印为素数
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;
}
我参加了一个编程竞赛,我需要计算一百万个数字的排列顺序。当然一个排列的阶数只是循环长度的最小公倍数。
因此问题归结为:给定一些加起来为一百万的整数,我需要计算它们的最小公倍数。当然,最小公倍数可能很大。该问题要求我打印答案 mod 10^9+7,这是一个质数。我怎样才能做到这一点?
我不确定如何,因为每次计算都减少结果会使我无法计算最小公倍数。
需要说明的是,我知道如何计算最小公倍数,因为它只是数字除以最大公因数的乘积,使用欧氏算法计算最大公因数很简单。
非常感谢您。
计算 LCM 的质因数分解,然后将所有这些质数相乘 mod 10^9+7:
long modulus = 1000000007
long product = 1;
for (long prime : primes) {
product = (product * prime) % modulus;
}