求n个数的最大公约数和最小公倍数C++

一、问题描述
求n个数的最大公约数和最小公倍数。
二、解题思路
1、首先我们可以利用辗转相除法编写一个函数gcd(int a,int b)来求出两个数的最大公约数,然后将输入的n个数放进数组a[100]中,编写一个函数GCD(int a[],int n)函数利用for循环来依次求解每两个数的最大公约数,最后得到n个数的最大公约数。
2、求出两个数的最大公约数后,若k是a和b的最大公约数,那么a和b的最小公倍数为ab/k。编写函数lcm(int a,int b)求出两个数的最小公倍数,利用循环结构遍历一次数组即可求出n个数的最小公倍数。
3、在进行数据的正确性验证时,我们可以编写一个检验函数inspect(int a[],int n)来判断输入的数字中是否存在0,若存在则重新输入。
三、主要代码
1、检验函数int inspect(int a[],int n) //判断输入的数字中是否含有0
{ for(int i=0;i<n;i++)
{ if(a[i]==0)
{cout<<“输入的数字中含有0,错误!”;
return 1;
}
}
return 0 ; }
2、求n个数的最大公约数
Int gcd(int a,int b) //求两个数的最大公约数
{ int temp; if(a<b) //使得a必须大于b
{ temp=a;
a=b;
b=temp;
}
while(b!=0) //通过循环求两个数的余数,直到余数为0
{ temp=a%b; a=b; b=temp; }
return(a);
}
Int GCD(int a[],int n) //求n个数的最大公约数
{ int i; int c=a[0];
for (i=1;i<n;i++) //利用for循环 调用求两个最大公约数的函数来求n个数得最大公约数 { c=gcd(c,a[i]);}
return c;}
3、求n个数的最小公倍数
Int lcm(int x,int y) //求两个数的最小公倍数
{ return x
y/gcd(x,y); }
Int LCM(int a[],int n) //求n个数的最小公倍数
{ int i; int s=1;
for (i=0;i<n;i++)
{s=lcm(s,a[i]);}
return s;}
四、算法设计思路


五、调试,测试及运行结果
输入数字,结果输出个数的最大公约数和最小公倍数。
在这里插入图片描述
六、经验总结 刚开始看见这个题目的时候,我只想到用辗转相除法来求两个数的最大公约数和最小公倍数。然后网上查询以后知道要再利用一个for循环来把输入的数字保存到数组里遍历,先求前两个数的最大公约数,再用前两个数的最大公约数来和第三个数求它们的最大公约数,就这样依次进行,最后求出n个数的最大公约数和最小公倍数。从这个题目中我也学会了如何将数学思维转换成编程语言。
代码
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 28
    点赞
  • 91
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值