求多個數的最小公倍數

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

參考:https://blog.csdn.net/yopilipala/article/details/65934939c++

main那裏一直過不了,不知道爲啥,而後就去搜了這個。即先求兩個數的最小公倍數,再將這個數和後一個數求。ide

參考中求最大公約數用了遞歸的方法。//但只要是這個方法,不用特意用gcd函數,自定義函數均可以滴函數

【果真基礎的經典題目都還沒徹底掌握呀】spa

 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
相關文章
相關標籤/搜索