求多个数的最小公倍数

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值