c语言在多个数数最大数,求多个数的最大公因数算法 C语言

我们用(a1,a2,....)表示最大公因数  [a1,a2,.....]表示最小公倍数

1、两个数的最大公因数

辗转相除法,可以直接使用C语言自带的 c = __gcd(a,b);

辗转相除法原理可以自行百度。

2、多个数以上的最大公因数

1、多次辗转相除法

1.使用辗转相除法求a1和a2的最大公因数(a1,a2)

2.使用辗转相除法求(a1,a2)和  a3 的最大公因数(a1,a2,a3);

3.重复,得到(a1,...,an)

代码

int Gcd(int a[],int n){//多次辗转相处法

int ans = a[0];

for(int i=1;i

2、变换法

1、找到a1,a2,..,an中的最小非零项aj,若有多个最小非零项则任取一个

2、 aj以外的所有其他非0项ak用ak mod aj代替;若没有除aj以外的其他非0项,则转到(4)

3、转到  1

4、 a1,a2,..,an的最大公约数为aj

代码

int Gcd2(int a[],int n){//变换法

int Min=a[0],pos=0,conter=0;

while(conter

3、两个数多的最小公倍数

公式:a*b=[a,b]*(a,b)

4、多个数的最小公倍数

多个数的最小公倍数并无像两个数的最小公倍数的计算公式

公式:[a1,a2,..,an]=M/(M/a1,M/a2,..,M/an)   其中M为a1,a2,..,an的乘积

1、计算m=a1*a2*..*an

2、把a1,a2,..,an中的所有项ai用m/ai代换

3、找到a1,a2,..,an中的最小非零项aj,若有多个最小非零项则任取一个

4、aj以外的所有其他非0项ak用ak mod aj代替;若没有除aj以外的其他非0项,则转到(6)

5、转到(3)

6、最小公倍数为m/aj

代码:

int Lcm(int a[],int n){

int m=1;

for(int i=0;i

嗯,就是这样。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值