n个数的最大公约、最小公倍数

 1 #include <cstdio>
 2 #include <cstring>
 3 using namespace std;
 4 #define N 1010
 5 
 6 //两个数的最大公约数和最小公倍数
 7 __int64 Gcd(__int64 a, __int64 b)
 8 {
 9     if(b==0)
10         return a;
11     return Gcd(b, a%b);
12 }
13 
14 __int64 Lcm(__int64 a, __int64 b)
15 {
16     return a/Gcd(a, b)*b;
17 }
18 
19 //n个数的最大公约数和最小公倍数
20 __int64 nGcd(__int64 *a, int n)
21 {
22     if(n==1)
23         return *a;
24     return Gcd(a[n-1], nGcd(a, n-1));
25 }
26 __int64 nLcm(__int64 *a, int n)
27 {
28     if(n==1)
29         return *a;
30     return Lcm(a[n-1], nLcm(a, n-1));
31 }
32 int main()
33 {
34     int t;
35     __int64 a[N], n;
36     scanf("%d", &t);
37     while(t--)
38     {
39         scanf("%I64d", &n);
40         for(int i=0; i<n; i++)
41             scanf("%I64d", a+i);
42         __int64 tp = nLcm(a, n);
43         printf("%I64d
",tp);
44     }
45 }
原文地址:https://www.cnblogs.com/khan724/p/4147209.html