【数论】最大公因数和最小公倍数

本文介绍了最大公因数的概念,通过辗转相除法求解的方法,以及如何用编程实现gcd函数。同时,阐述了最小公倍数的定义和求解最小公倍数的公式,强调在处理大数时数据溢出的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天来讲讲课

最大公因数是什么?

我们想要知道最大公因数是什么,我们要先知道公因数是什么(最大公因数似乎四年级就学了)

首先,我们知道,如果a能被b整除,我们说b是a的因数

比如6能被1、2、3、6整除,那1、2、3、6是6的因数

注意!!!6也是6的因数

同理,4的因数是1、2、4

6和4的因数中,1、2这两个因数是6和4都有的,我们叫他公因数

两个数最大的公因数,叫做最大公因数

我们来试一下,找出12和18的最大公因数:

12的因数:1、2、3、4、6、12

18的因数:1、2、3、6、9、18

公因数:1、2、3、6

最大公因数:6

---------------------------------------------------------------------------------------------------------------------------------

最大公因数怎么写?

我们要想写能求出最大公因数的程序,我们首先要找到一个容易用程序实现的找最大公因数的方法

这里介绍一种方法:辗转相除法,这是由伟大的欧几里得(c++数论的统治者,c++数论里有些东西都是他提出来的)提出来的

辗转相除法是这样的:

加入我们要找12和18的最大公因数

我们先求出18和12的余数:18%12==6

因为a和b的最大公因数和b与a%b的最大公因数是一样的,所以我们将问题转化为求12和6的最大公因数

12%6==0,余数为0,说明6为最大公因数

知道了原理,我们就很容易就能写出来了:

int gcd(long long a,long long b){//一般来说,我们用gcd(a,b)来表示求a和b的最大公因数
    if(b==0)return b;//如果b为0,说明找到了最大公因数
    else return gcd(b,b%a);//否则用两个数的余数继续计算
}

---------------------------------------------------------------------------------------------------------------------------------

最小公倍数是什么?

首先,我们知道,如果a能被b整除,我们说a是b的倍数

比如,24能被12整除,我们说24是12的倍数

注意!!!24也是24的倍数

两个数相同的倍数,我们称之为公倍数

所有公倍数中,最小的公倍数,我们称为最小公倍数

比如4和6的最小公倍数是12

---------------------------------------------------------------------------------------------------------------------------------

最小公倍数怎么写?

int lcm(long long a,long long b){//我们一般用lcm(a,b)来表示a和b的最小公倍数
    return a/gcd(a,b)*b;
    //求最小公倍数的公式是a*b/ a和b的最小公倍数
    //注意细节,如果a和b很大,我们应该将a先除一下,然后×b,可以避免数据溢出
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值