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\n",tp);

44     }

45 }

 

你可能感兴趣的:(n个数的最大公约、最小公倍数)