求多个数的最小公倍数

http://oj.acm.zstu.edu.cn/JudgeOnline/problem.php?cid=4953&pid=2

参考:https://blog.csdn.net/yopilipala/article/details/65934939

main那里一直过不了,不知道为啥,然后就去搜了这个。即先求两个数的最小公倍数,再将这个数和后一个数求。

参考中求最大公约数用了递归的方法。//但只要是这个方法,不用特地用gcd函数,自定义函数都可以滴

【果然基础的经典题目都还没完全掌握呀】

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int yue(int a,int b)
 4 {
 5     if(a<b)swap(a,b);
 6     int c=a%b;
 7     while(c!=0)
 8     {
 9        a=b;
10        b=c;
11        c=a%b;
12     }
13     return b;
14 }
15 int main()
16 {
17     int t;
18     cin>>t;
19     while(t--)
20     {
21         int n;
22         cin>>n;
23         int k,cnt,a; 
24         a = cnt = 1;
25         while(n--)
26         {
27             cin>>k;//一边输入一边计算,节省时间
28             cnt = a/yue(a,k)*k;//先除后乘防止溢出;根据[a,b]=a*b/(a,b)
29             a = cnt;
30         }
31         cout<<cnt<<endl;
32     }
33 }
View Code
1 long long gcd(long long a,long long k)
2 {
3     if(k == 0)
4         return a;
5     else
6         return gcd(k,a%k);
7 }
gcd
原文地址:https://www.cnblogs.com/XXrll/p/10160898.html