这段代码是从另一个用户问题中复制的,我很好奇累积在这里是如何工作的。我从这段代码中得到了正确的结果,但想知道 lcm 在“累积”时采用什么参数。初始化为 A,范围之和为 b?请帮忙
#include <numeric>
int gcd(int a, int b)
{
for (;;)
{
if (a == 0) return b;
b %= a;
if (b == 0) return a;
a %= b;
}
}
int lcm(int a, int b)
{
int temp = gcd(a, b);
return temp ? (a / temp * b) : 0;
}
int main()
{
int arr[] = { 5, 7, 9, 12 };
int result = std::accumulate(arr, arr + 4, 1, lcm);
std::cout << result << '\n';
}