并不重要的前言

  最近学习了一些数论知识,但是自己都不懂自己到底学了些什么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. Spark学习之路 (八)SparkCore的调优之开发调优

    摘抄自:https://tech.meituan.com/spark-tuning-basic.html 前言 在大数据计算领域,Spark已经成为了越来越流行.越来越受欢迎的计算平台之一.Spark ...

  2. spring boot: ConfigurationProperties

    读取配置信息 1.5 之前 @Component @ConfigurationProperties(prefix = "user", locations= {"class ...

  3. django的母板和继承

    Django模板中只需要记两种特殊符号: {{  }}和 {% %} {{ }}表示变量,在模板渲染的时候替换成值,{% %}表示逻辑相关的操作. 母板 <!DOCTYPE html> & ...

  4. web前端利用turf.js生成等值线、等值面

    样例如下: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> ...

  5. UVALive 3295 Counting Triangles

    题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_ ...

  6. Django框架----外键关联

    app/models.py中: 创建班级表 class classes(models.Model): id = models.AutoField(primary_key=True) name = mo ...

  7. 垂直打击之JVM剖析

    让Java应用程序运行是一回事,但让他们跑得快就是另外一回事了.在面对对象的环境中,性能问题就像来势凶猛的野兽.但JVM的复杂性将性能调整的复杂程度增加了一个级别.这里Refcard涵盖了JVM in ...

  8. sql server还原注意事项

    使用Sql Server 2000的数据库备份文件还原Sql Server 2000的数据库和还原Sql Server 2005的数据库区别:1.在还原至Sql 2000时是必须新建数据库并对其还原, ...

  9. MXNet官方文档中文版教程(3):神经网络图(Symbol)

    https://blog.csdn.net/qq_36165459/article/details/78394259 文档英文原版参见Symbol - Neural network graphs an ...

  10. scrapy 去重 dont_filter=False

    yield Request(...... dont_filter=False)