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 }
  • 相关阅读:
    网站链接
    CSS 初始化
    常见浏览器+浏览器内核
    sublime及其插件的安装
    数码时钟.js
    每天迁移MySQL历史数据到历史库Python脚本
    python和redis简单交互
    python和mongodb简单交互
    python3与mysql交互
    Red Hat Enterprise Linux 7.2修改主机名(hostname)
  • 原文地址:https://www.cnblogs.com/Hoyoak/p/11386569.html
Copyright © 2011-2022 走看看