C++编程 又见最小公倍数 计算n个数的最小公倍数 求大神帮助

 我来答
风若远去何人留
2019-10-16 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450131
专业C/C++软件开发

向TA提问 私信TA
展开全部
和两个数类似,只不过是先求前两个数的最小公倍数,然后用结果和下一个求最小公倍数,这样下去一直到最后一个输出就好
百度网友bec66c6
2019-10-16 · TA获得超过1008个赞
知道小有建树答主
回答量:3930
采纳率:48%
帮助的人:318万
展开全部
您好,非常荣幸能在此回答您的问题。以下是我对此问题的部分见解,若有错误,欢迎指出。展开全部
/*
要求:必须使用数组做。
输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数。
为每组测试数据输出它们的最小公倍数,每个测试实例的输出占一行。题目确保结果在32位整数范围内。
输入样例:2 4 6
输出样例: 12

感恩节快乐哦!
*/
#include <stdio.h>
#include <stdlib.h>
/* 欧几里得算法求 数字 a b 的最大公约数 */
int gcd(int a,int b)
{
if(a<b)
{
return gcd(b,a);
}
else if(b==0)
{
return a;
}
else
{
return gcd(b,a%b);
}
}
/* 数字 a b 的最小公约数 */
int lcm(int a,int b)
{
return a*b/gcd(a,b);
}

int main(int argc, char *argv[])
{
int n,i,r;
int *data=;
while(scanf("%d",&n)!=)
{
// 动态申请数字空间
data = (int*)malloc(n*siz(n));
for(i=0;i<n;i++)
{
scanf("%d",&data[i]);
}
// 特殊处理只有一个数字的情况
if(n==1)
{
r = data[0];
}
else
{
// 先求前两个数字的最小公倍数
r = lcm(data[0],data[1]);
// 求第 i 个数字和前面所有数字的最小公倍数
for(i=2;i<n;i++)
{
r = lcm(r,data[i]);
}
}
printf("%d\n",r);

// 释放空间
free(data);
}
return 0;
}非常感谢您的耐心观看,如有帮助请采纳,祝生活愉快!谢谢!
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式