并不重要的前言

  最近学习了一些数论知识,但是自己都不懂自己到底学了些什么qwq,在这里把知识一并总结起来。

也不是很难的gcd和lcm

  显而易见的结论:

  为什么呢?

  根据唯一分解定理:

        a和b都可被分解为素因子的乘积,形如:

  则显而易见的有一下结论:

 

 

  相乘,得:

 

  得证

几种求gcd的算法

    1.   欧几里得算法(辗转相除法)
    2. 辗转相减法(优化:stein_gcd)  

      

     欧几里得算法

 基于事实:

  

 实现:

 int gcd(int a, int b){
return (b == ) ? a : gcd( b , a % b) ;
}

  简短而容易实现和记忆,非常优美

  但是可能会被斐波那契数列卡住,证明或者原因鸽了回头再写

      stein_gcd算法

  stein_gcd本质上是对更相减损术的优化,下面进行简单的介绍:

  1.   若a,b都是偶数,则计算gcd(a/2,b/2)*2;  ————>因为都含有2的因数,所以同时除以2后gcd(a,b)变为原来的1/2,再乘回去
  2. 若a是偶数,b是奇数,则计算gcd(a/2,b);  ————>因为只有一个数含有2作为因数,所以除以2后gcd(a,b)不变
  3. 若a是奇数,b是偶数,则计算gcd(a,b/2);  ————>同2.
  4. 若a是奇数,b是奇数,则计算gcd(abs(x-y),min(x,y)); ————>通过相减,使其变成偶数,原理参见更相减损术其实是我懒得写

  实现:

int stein_gcd(int x,int y){
if(x==)
return y;
if(y==)
return x;
if(x%==&&y%==)
return stein_gcd(x>>,x>>)*;
else if(x% ==)
return stein_gcd(x>>,y);
else if(y%==)
return stein_gcd(x,y>>);
else
return stein_gcd(abs(x-y),min(x,y));
}

  讲到这里,大概本期就结束了,至于没涉及到的,就是鸽了下一期的事情了

  至于下一次什么时候填坑,已经在做了逃

  

简单数论总结1——gcd与lcm的更多相关文章

  1. 数学--数论--HDU 5382 GCD?LCM?(详细推导,不懂打我)

    Describtion First we define: (1) lcm(a,b), the least common multiple of two integers a and b, is the ...

  2. Least Common Multiple (HDU - 1019) 【简单数论】【LCM】【欧几里得辗转相除法】

    Least Common Multiple (HDU - 1019) [简单数论][LCM][欧几里得辗转相除法] 标签: 入门讲座题解 数论 题目描述 The least common multip ...

  3. 数论入门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}p ...

  4. Pairs Forming LCM (LightOJ - 1236)【简单数论】【质因数分解】【算术基本定理】(未完成)

    Pairs Forming LCM (LightOJ - 1236)[简单数论][质因数分解][算术基本定理](未完成) 标签: 入门讲座题解 数论 题目描述 Find the result of t ...

  5. GCD and LCM HDU 4497 数论

    GCD and LCM HDU 4497 数论 题意 给你三个数x,y,z的最大公约数G和最小公倍数L,问你三个数字一共有几种可能.注意123和321算两种情况. 解题思路 L代表LCM,G代表GCD ...

  6. HDU 4497 GCD and LCM(数论+容斥原理)

    GCD and LCM Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total ...

  7. 数论——算数基本定理 - HDU 4497 GCD and LCM

    GCD and LCM Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total ...

  8. HDU4497 GCD and LCM(数论,质因子分解)

    HDU4497 GCD and LCM 如果 \(G \% L != 0\) ,那么输出 \(0\) . 否则我们有 \(L/G=(p_1^{r_1})\cdot(p_2^{r_2})\cdot(p_ ...

  9. HDU4497——GCD and LCM

    这个题目挺不错的,看到是通化邀请赛的题目,是一个很综合的数论题目. 是这样的,给你三个数的GCD和LCM,现在要你求出这三个数有多少种可能的情况. 对于是否存在这个问题,直接看 LCM%GCD是否为0 ...

随机推荐

  1. Yii数据对象笔记

    要执行一个SQL查询,应该遵循以下步骤 - 创建一个 yii\db\Command 的 SQL查询命令 绑定参数(非必须) 执行命令 第1步 - 创建一个 actionTestDb()方法在 Site ...

  2. 更换tomcat运行日志目录

    1.在tomcat安装文件夹的bin目录下,修改catalina.sh,改变catalina.out的输出目录 CATALINA_OUT="$CATALINA_BASE"/logs ...

  3. copy on write,代理模式

    StringBuilder 内部用了代理的技术实现, 是可变字符串的代理 .net设计模式实例之代理模式(Proxy Pattern) 一.代理模式简介(Brief Introduction) 代理模 ...

  4. urlopen和urlretrieve

    import urllib import re url = "https://www.duitang.com/search/?kw=%E9%AC%BC%E6%80%AA&type=f ...

  5. github开源的一些ip解析 ,运营商信息,经纬度 地址 后续开发使用

    https://github.com/wzhe06/ipdatabase  ip解析 https://github.com/flyaction/ipdatabase 比较新 https://githu ...

  6. Django框架----Object Relational Mapping(ORM)

    Django中的ORM Django项目使用MySQL数据库 1. 在Django项目的settings.py文件中,配置数据库连接信息: DATABASES = { "default&qu ...

  7. 给web项目整合富文本编辑器

    给jsp页面整合富文本编辑器下载——删除多余的组件——加入到项目中——参照案例来完成整合步骤:1. 解压zip文件,将所有文件复制到Tomcat的webapps/kindeditor目录下. 2. 将 ...

  8. Piggy-Bank HDU - 1114

    Before ACM can do anything, a budget must be prepared and the necessary financial support obtained. ...

  9. An Example of How Oracle Works

    Oracle是怎么工作的,摘自Oracle 9i的官方文档 The following example describes the most basic level of operations tha ...

  10. Python3 Pandas的DataFrame格式数据写入excle文件、json、html、剪贴板、数据库

    Python3 Pandas的DataFrame格式数据写入excle文件.json.html.剪贴板.数据库 一.DataFrame格式数据 Pandas是Python下一个开源数据分析的库,它提供 ...