zoukankan      html  css  js  c++  java
  • 整除理论

    整除也是一片新天地呢qwq


    整除的定义:设n为非负整数,d为正整数,如果n/d为整数。则称d整除n,记作d|n。

    任何正整数都整除0。


    约数:设n为非负整数,d为正整数,如果存在d|n,则称d为n的约数。

    最大公约数(GCD):设a为正整数,b为正整数,a和b的所有约数中,相同且最大的那个称为a,b的最大公约数,

    记作gcd(a,b)。

    最大公约数的性质:gcd(a,0)=a; gcd(a,b)=gcd(b,a mod b); gcd(a,b)=gcd(b,a);

    1,质因数分解求GCD

    先将a和b质因数分解。

    得到

    a=∏Piai

    b=∏Pibi

    gcd(a,b)=∏Pimin(ai,bi)

    2,辗转相除法求GCD

    利用性质:gcd(a,b)=gcd(b,a%b); gcd(a,0)=a;

    1 inline void gcd(int a,int b)
    2 {
    3     if(b==0) return a;
    4     return gcd(b,a%b);
    5 } 

    若gcd(a,b)=1,则称a,b互质。

    求n的正约数集合:试除法

    求1-n每个数的正约数集合:倍数法,类似于埃氏筛不同的是不是只用质数筛,是用每个数都筛一遍。


    倍数:若a,b为正整数,d为非负整数,若a|d,b|d,则称d为a,b的倍数。

    最小公倍数(LCM):a,b的所有公倍数中最小的那个。

    LCM(a,b)=a*b/gcd(a,b);

    LCM(a,b)=a*gcd(a,b)/b;

     1 inline int gcd(int a,int b)
     2 {
     3     if(b==0) return a;
     4     return gcd(b,a%b);
     5 } 
     6 
     7 inline int lcm(int a,int b,int ans)
     8 {
     9     ans=(a/gcd(a,b))*b;
    10     return ans;
    11 }
  • 相关阅读:
    使用CNN和Python实施的肺炎检测
    使用OpenCV和Tensorflow跟踪排球的轨迹
    使用PyMongo查询MongoDB数据库!
    Pandas的crosstab函数
    日记9----web专用
    日记8----windows操作系统专用
    日记7----Java专用
    句柄类
    代理类
    C++ 计算机程序设计(西安交大mooc)
  • 原文地址:https://www.cnblogs.com/Hoyoak/p/11386569.html
Copyright © 2011-2022 走看看