c++中多个数的最小公倍数

ProblemDescription最小公倍数(LeastCommonMultiple,缩写LCM),是数论中的一个概念。两个整数公有的倍数称为它们的公倍数,其中最小的一... Problem Description
最小公倍数(Least Common Multiple,缩写LCM),是数论中的一个概念。
两个整数公有的倍数称为它们的公倍数,其中最小的一个正整数称为它们两个的最小公倍数。
计算最小公倍数时,通常会借助最大公约数来辅助计算。
当然,n个数也可以有最小公倍数,例如:5,7,15的最小公倍数是105。
给你n个数,请你计算它们的最小公倍数。
Input
测试数据有多组,首先是一个整数T(1<=T<=50),表示测试组数。
每组测试分别是整数n(2<=n<=20)和n个正整数([1,100000])。这里保证最终的结果在int型范围内。
Output
对于每组测试,输出最小公倍数。
Sample Input
2
3 5 7 15
5 1 2 4 3 5
Sample Output
105
60
展开
 我来答
White_MouseYBZ
2018-01-23 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6626万
展开全部
#include "stdio.h"
int lcm2(int a,int b){
int t;
if(a>b)
for(t=a;t%b;t+=a);
else
for(t=b;t%a;t+=b);
return t;
}
int main(int argv,char *argc[]){
int n,T,i,k,t;
printf("Input T(int 1<=T<=50)...\nT=");
if(scanf("%d",&T)!=1 || T<1 || T>50){
printf("Input error, exit...\n");
return 0;
}
while(T--){
printf("Input n(int 1<n<21)...\nn=");
if(scanf("%d",&n)!=1 || n<2 || n>20){
printf("Input error, exit...\n");
return 0;
}
printf("Please enter %d positive integer(s):\n",n);
for(i=0;i<n;i++){
while(scanf("%d",&k)!=1 || k<1 || k>100000){
printf("Input error, redo: ");
fflush(stdin);
}
t = i ? lcm2(t,k) : k;
}
printf("The result is %d\n",t);
}
return 0; 
}

运行样例:

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式