点击打开链接
#include <stdio.h>int gcd(int n,int r) //欧几里德递归求出最大公约数
{return r?gcd(r,n%r):n;
}int lcm(int n,int m) //求出两个数之间的最小公倍数
{return n/gcd(n,m)*m; // 如果n*m的数字太大,那么可能溢出,这里采用先除再乘
}
int main()
{int n;while(scanf("%d",&n) != EOF){int res = 1,k;while(n--){scanf("%d",&k);res = lcm(res,k); //所有数的最小公倍数}printf("%d\n",res);}
}
求出所有数字的最小公倍数,可以先每次求出两个数的之间的最小公倍数,最后,得出的结果是所有的数的最小公倍数。