并不重要的前言

  最近学习了一些数论知识,但是自己都不懂自己到底学了些什么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. asp.net GridView增加删除功能

    protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)    {        string id ...

  2. 准备MyBatis

    MyBatis下载:https://github.com/mybatis/mybatis-3/releases MyBatis文件目录: 中文参考文档:http://www.mybatis.org/m ...

  3. Nginx配置基础-location

    location表达式类型 ~ 表示执行一个正则匹配,区分大小写~* 表示执行一个正则匹配,不区分大小写^~ 表示普通字符匹配.使用前缀匹配.如果匹配成功,则不再匹配其他location.= 进行普通 ...

  4. 利用可排序Key-Value DB构建时间序列数据库(简论)

    为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/ShiJiaqi. http://www.cnblogs.com/shijiaqi1066/p/5855064. ...

  5. Mini-Batch 、Momentum、Adam算法的实现

    Mini-Batch 1. 把训练集打乱,但是X和Y依旧是一一对应的 import numpy as np a = np.random.randn(3,3) print(a) b = list(np. ...

  6. 限制访问次数例子和Ajax的some

    -- 限制访问次数作业解答 -- -- urls.py 里-- from django.conf.urls import url from django.contrib import admin fr ...

  7. AURO OtoSys IM100 vs Lonsdor K518ISE: which better?

    Comparison: AURO OtoSys IM100 and Lonsdor K518ISE It’s aimed to help make a purchase of decent auto ...

  8. 常用的node.js模块

    一.url模块1.url.parse:将一个url转换成一个对象 1)参数1:url 2)参数2:布尔值 3)如果参数2是一个true的情况下会将query解析成一个对象2.url.format:将一 ...

  9. org.I0Itec.zkclient.exception.ZkTimeoutException: Unable to connect to zookeeper server within

    org.I0Itec.zkclient.exception.ZkTimeoutException: Unable to connect to zookeeper server within timeo ...

  10. 关于nginx配置虚拟主机

    前提:我的虚拟主机的外网ip为111.231.226.228(是云服务器哈)     本地测试环境为windows7(修改本地的hosts文件) 步骤:(安装nginx可以看看我文章“linux ng ...