📂数学
🔖质数
2022-07-11 08:42阅读: 58评论: 0推荐: 0

数论_最大公约数 & 最小公倍数

最大公约数(gcd)

辗转相除法
算法核心: gcd(a,b) = gcd(b,a mod b)
证明:

公理
如果 a 能整除 k,且 b 能整除 k ,那么 ax+by (x,y 是未知数) 也能整除 k

首先 amodb=aab×b
因此 a 和 b 的公因数 就是 ax+by ,a ,b的三个数公因数;那必然是b 和 amodb=aab×b 的公因数。
反之同理,证毕。

时间复杂度: O(log2n)
代码:

int gcd(int a,int b)
{
int c=a%b;
while(c!=0)
{
a=b;
b=c;
c=a%b;
}
return b;
}

最小公倍数(lcm)

最小公倍数可以通过最大公约数求:最小公倍数 = 两数之和 / 最大公约数。
image

int lcm(int a,int b)
{
return a*b/gcd(a,b);
}

质数和约数

本文作者:kingwzun

本文链接:https://www.cnblogs.com/kingwz/p/15247937.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   kingwzun  阅读(58)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起