C语言程序设计:求n个数的最小公倍数。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言程序设计:求n个数的最小公倍数。相关的知识,希望对你有一定的参考价值。

要求:必须使用数组做。
输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数。
为每组测试数据输出它们的最小公倍数,每个测试实例的输出占一行。题目确保结果在32位整数范围内。
输入样例:2 4 6
输出样例: 12

/*
要求:必须使用数组做。
输入包含多个测试实例,每个测试实例的开始是一个正整数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=NULL;
while(scanf("%d",&n)!=EOF)

// 动态申请数字空间
data = (int*)malloc(n*sizeof(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;
参考技术A 原理:求最小公倍数,则先求最大公约数,最后所有数之积再除最大公约数即为最小公倍数
求两个数最大公约数原理:利用辗转相除法....自己百度一下,有详细
int
gcd(int
a,
int
b)

if
(a
==
0)
return
b;
if
(b
==
0)
return
a;
if
(a
<
b)
//交换两个数,使大数放在m上

int
tmp
=
a;
a
=
b;
b
=
tmp;

while
(b
!=
0)

int
tmp
=
a
%
b;
a
=
b;
b
=
tmp;

return
a;

利用函数gcd()返回数存在c,最后最小公倍数就为m
=
a
*
b
/
c
三个或者以上求最小公倍数时,先求前两个数最大公约数,然后用最大公约数跟下一个数求最大公约数,如此类推,最后把所有数相乘再除以最后得出的最大公约数,即为最小公倍数
我只给出思路而已,由于我没做过,如果你想要完成程序,就联系我吧

C语言试题七十八之请编写函实现求2个数的最大公约数和最小公倍数(辗转相除法)

1、 题目

求2个数的最大公约数和最小公倍数

2、思路:

(1)最小公倍数=输入的两个数之积除于它们的最大公约数,关键是求出最大公约数;
(2)求最大公约数用辗转相除法(又名欧几里德算法)

3 、温馨提示

      C语言试题汇总里可用于计算机二级C语言笔试、机试、研究生复试中C程序设计科目、帮助C语言学者打好程序基础、C语言基础,锻炼您的逻辑思维和解决问题的能力,帮助你成为C语言笔试、机试解题高手,帮助你拿到C语言工作的offer,每一个题目都附带源代码和运行结果,让你不再有任何困惑,妈妈再也不担心我的C语言了。如果程序有任何看不懂或者哪个步骤不理解的地方都可以加我微信(15874274916)私聊我,或者有更好的思路解决办法都可以加我微私聊,一起探讨、希望可以正真的帮助到你,同时也可以扫下面的二维码关注我微信公众号,比如你还对生活、美食或者其它方面都感兴趣,都可以加微信交流,博主擅长讲解计算机相关方面的知识、如果大家对计算机方向、前端、移动端、服务端、数据结构、算法、网络、高数等等一些列方向比较迷茫或者不知道要学哪些?或者具体怎么学?或者其它方向有任何困惑都可以找我交流,谢谢大家关注。

以上是关于C语言程序设计:求n个数的最小公倍数。的主要内容,如果未能解决你的问题,请参考以下文章

C语言:输入五个数,求其最大值与最小值

小白.C语言怎么求多个数的最大值

c语言从键输入5个数求最大值和最小值 只用if(刚学,要最简单的)

C语言求输入三个数输出最大与最小值

c语言用函数求最大值的程序出错,求解

c语言中如何求五个数据中的最小值