Least Common Multiple
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 77733 Accepted Submission(s): 29883
Problem Description
The least common multiple (LCM) of a set of positive integers is the smallest positive integer which is divisible by all the numbers in the set. For example, the LCM of 5, 7 and 15 is 105.
Input
Input will consist of multiple problem instances. The first line of the input will contain a single integer indicating the number of problem instances. Each instance will consist of a single line of the form m n1 n2 n3 … nm where m is the number of integers in the set and n1 … nm are the integers. All integers will be positive and lie within the range of a 32-bit integer.
Output
For each problem instance, output a single line containing the corresponding LCM. All results will lie in the range of a 32-bit integer.
Sample Input
2
3 5 7 15
6 4 10296 936 1287 792 1
Sample Output
105
10296
Source
East Central North America 2003, Practice
Recommend
JGShining | We have carefully selected several similar problems for you: 1005 1008 1061 1049 1108
#include<iostream>
//n个数相乘除以最大约数
//分治策略,将多个分成两个两个
using namespace std;
/*
1.使用数组存储输入数据
2.自定义一个辗转相除法(算法即迭代)
3.连续调用
*/
int least(int a,int b){
int a1,b1,r;
a1=a;
b1=b;
//1.判别传入数据的大小
if(a<b){
int t;
t=a;a=b;b=t;
}
//2.辗转相除 ,即寻找最大公约数
while(b!=0){
r=a%b;
a=b;
b=r;
}
//3.处理越界
return a1/a*b1;
}
int main(){
int m,n,a[1000];//m表示几组实体,n表示每组实体的个数
cin>>m;
while(m--)
{
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
//判别输入数据的个数
if(n>1)
{
int l=least(a[1],a[2]);
for(int i=3;i<=n;i++)
{
l=least(l,a[i]);
}
cout<<l<<endl;
}
else
cout<<a[1]<<endl;
}
}
为我提供思路的文章:思路来源