最小公倍数--结果超出int表示范围

来源:互联网 发布:transition.js 下载 编辑:程序博客网 时间:2024/04/24 10:07

写代码时,要注意各种数据类型表示的范围,求最小公倍数,如果求的数值比较大时,就要注意超出表示范围的可能,数据开大一点。

//WA#include<iostream>using namespace std;long long GCD1(long long, long long);long long GCD2(long long, long long);long long LCM(long long, long long);int main(){long long n;long long m;long long val1;long long re;cin>>n;while(n--){cin>>m;re = 1;while(m--){cin>>val1;re = LCM(re,val1);}cout<<re<<endl;}return 0;}long long LCM(long long m, long long n){return m*n/GCD2(m,n); }long long GCD1(long long m, long long n){long long val;if(m >= n){val = m % n;if(val == 0){return n;}m = n;n = val;}else{val = n % m;if(val == 0){return m;}n = m;m = val;}//这里一定要写return 忘记了return就会报错的 return GCD1(m, n);}long long GCD2(long long m, long long n){long long val;do{if(m >= n){val = m % n;//记录下更小的n m = n;}else{val = n % m;}n = val;}while(val != 0);return m;}