C++编程 又见最小公倍数 计算n个数的最小公倍数 求大神帮助
2个回答
展开全部
您好,非常荣幸能在此回答您的问题。以下是我对此问题的部分见解,若有错误,欢迎指出。展开全部
/*
要求:必须使用数组做。
输入包含多个测试实例,每个测试实例的开始是一个正整数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;
}非常感谢您的耐心观看,如有帮助请采纳,祝生活愉快!谢谢!
/*
要求:必须使用数组做。
输入包含多个测试实例,每个测试实例的开始是一个正整数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;
}非常感谢您的耐心观看,如有帮助请采纳,祝生活愉快!谢谢!
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询