理论: 数论(1):整除、gcd以及lcm

整除

整除的性质

设a, b是两个整数, 并且b ≠ 0. 如果存在整数c, 使得 a = b * c , 则称a被b整除, 或者b整除a,记作b |a(这里是a 被 b整除, a >= b)

此时又称a是b的倍数, b是a的因子。如果b不整除a, 记作

·

整除基本定义

定义1.1:如果n被2除的余数为 0, 则对于某个整数k, 有n = 2k, 我们称n为偶数;而如果n被2除的余数为1, 我们则对于某个整数k, 有n = 2k + 1, 我们称n为奇数。

定义1.2 :设a, b是两个整数, 并且b ≠0, 则存在唯一的整数q和r, 使得:

.

这个表达式叫做带余式除法, 并记作r = a (mod b); 例如 -13 mod 5 = 3

·

整除的性质

.

.

.

.

.

整除的应用

整除的位数

斐波那契整除

·

·

·

·

gcd和lcm

基本定义

定义1.3: 设a和b是两个整数, 如果d|a, 并且d|b, 那么我们称d是a与b的公因子。

定义1.4: 设a和b是两个不全为0的整数, 称a与b的公因子中最大的为a与b的最大公因子, 或最大公约数, 记作gcd(a, b), 有时简记为(a, b)

定义1.5: 设a和b是两个非零证书, 称a与b的最小正公倍数为a与b的最小公倍数, 记作lcm(a, b), 有时简记为[a, b]

基本运算性质

.

.

.

.

.

关于gcd和lcm的运算

.

.

上述两图就是传说中的欧几里得定理

gcd运算性质的证明

简要证明:

我们之所以说上述的递归式成立,是因为m和n的任何公因子也必定是m和(n mod m)的公因子。

证明上述一句话是基于以下公式

.

在这里我们可以由此引入拓展欧几里得定理

完整证明:

其中(a,b,q,r)∈Z,则:

.

!证:只需证a与b、b与r有相同的公因子。

(1).设d是a与b的公因子, 即(d|a)且(d|b)。我们注意到

.

从而我们可以的得到如下的推导过程:

.

这里我们证明了在a|b 的情况下的正确定(就是在上面表达式中gcd(0,n)的正确性)

·

(2).设d是b与r的公因子, 从而我们有如下推导:

.

gcd和lcm算法伪码描述

while(max!= 0)
    min→temp
    max mod min→min
    temp→max
return <max>

例题

两仪剑法

时间: 2024-10-12 13:30:55

理论: 数论(1):整除、gcd以及lcm的相关文章

数论入门2——gcd,lcm,exGCD,欧拉定理,乘法逆元,(ex)CRT,(ex)BSGS,(ex)Lucas,原根,Miller-Rabin,Pollard-Rho

数论入门2 另一种类型的数论... GCD,LCM 定义\(gcd(a,b)\)为a和b的最大公约数,\(lcm(a,b)\)为a和b的最小公倍数,则有: 将a和b分解质因数为\(a=p1^{a1}p2^{a2}p3^{a3}...pn^{an},b=p1^{b1}p2^{b2}p3^{b3}...pn^{bn}\),那么\(gcd(a,b)=\prod_{i=1}^{n}pi^{min(ai,bi)},lcm(a,b)=\prod_{i=1}^{n}pi^{max(ai,bi)}\)(0和任何

HDU4497 GCD and LCM 数论 素数分解

题意很简单首先以前做最简单的LCM跟CGD的时候都知道先求出两个数A,B的最大公约数GCD,那么LCM可以利用  A*B/GCD来求得,这点一开始脑残了没想到,结果没有进行特盘所以错了,意思就是 题目给的L%G不为0的话就是无解,结果我给判其它的去了,肯定漏了些什么没有发现 然后对于 L/G进行素因子分解,同时任意的数都能够通过素因子分解来表示,所以三个解x,y,z也能分解 L/G = p1^q1*p2^q2.... x = p1^i1*... y = p1^j1*... z = p1^k1*.

hdu 4497 GCD and LCM 数论 素数分解

GCD and LCM Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Total Submission(s): 1339    Accepted Submission(s): 607 Problem Description Given two positive integers G and L, could you tell me how many solutions of

hdu 4497 GCD and LCM

GCD and LCM Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total Submission(s): 1092    Accepted Submission(s): 512 Problem Description Given two positive integers G and L, could you tell me how many solutions of (

hdu 4497 GCD and LCM 数学

GCD and LCM Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=4497 Description Given two positive integers G and L, could you tell me how many solutions of (x, y, z) there are, satisfying that gcd(x, y, z) = G and

gcd,lcm,ext_gcd,inv

Least Common Multiple http://acm.hdu.edu.cn/showproblem.php?pid=1019 1 #include<cstdio> 2 int gcd(int a,int b){ 3 return b?gcd(b,a%b):a; 4 } 5 int lcm(int a,int b){ 6 return a/gcd(a,b)*b; 7 } 8 int main(){ 9 int n,m,ans,x; 10 while(~scanf("%d&q

POJ 2429 GCD &amp;amp; LCM Inverse (大数分解)

GCD & LCM Inverse 题目:http://poj.org/problem? id=2429 题意: 给你两个数的gcd和lcm,[1, 2^63). 求a,b.使得a+b最小. 思路: lcm = a * b / gcd 将lcm/gcd之后进行大数分解.形成a^x1 * b^x2 * c^x3-- 的形式.当中a,b,c为互不同样的质数.然后暴力枚举就可以. 代码: #include<map> #include<set> #include<queue&

hdu 4497 GCD and LCM(唯一分解+容斥原理)

GCD and LCM Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) Total Submission(s): 78 Accepted Submission(s): 43 Problem Description Given two positive integers G and L, could you tell me how many solutions of (x, y, z)

hdu 4497 GCD and LCM(排列组合)

题目:hdu 4497 GCD and LCM 题目大意:给出三个数的最大公约数,和最小公倍数,问这三个数的排列组合关系. 解题思路:最小公倍数/最大公约数 ==  三个数不同部分的乘积.这样来考虑的话,三个数都要有最大公约数的部分,其余的部分就是由LCM / GCD 里面的因子构成.这里面的因子可能会有 2 2 3 这样的情况, 不同的因子之间是不会相互干扰的,但是相同的会出现问题,因为,不能同时将相同的因子都放在三个位置上,这样最大公约数就的要乘上这个因子.然后对于单种因子来考虑的话,每种因