zoukankan      html  css  js  c++  java
  • Algorithm,Number Theory,GCD

    #ifndef GCD_H
    #define GCD_H
    
    #include <cstdlib>
    #include <cmath>
    #include <algorithm>
    
    /***************************************************/
    // 最大公约数_
    int GCD(int x, int y)
    {
         int t;
         while(y > 0) {
              t = x % y;
              x = y;
              y = t;
         }
         return x;
    }
    
    /***************************************************/
    // 快速gcd_
    int kgcd(int a, int b)
    {
        if (a == 0) return b;
        if (b == 0) return a;
        // a,b都是偶数
        if (!(a&1) && !(b&1)) return kgcd(a>>1, b>>1) << 1;
        // a 奇 b 偶
        else if (!(b&1)) return kgcd(a, b>>1);
        else if (!(a&1)) return kgcd(b, a>>1);
        else return kgcd(abs(a - b), std::min(a, b));
    }
    
    /***************************************************/
    // a,n 互质,a 对 n 逆元
    // ax ≡ 1 (mod n)
    int Inv(int a, int n)
    {
         int d, x, y;
         d = extended_euclid(a, n, x, y);// d = ax + ny
         if(d == 1)  return (x%n + n) % n;// x可能为负数
         else     return -1; // no solution
    }
    
    /***************************************************/
    //如果GCD(a,b) = d, 则存在x, y, 使d = ax + by
    // GCD(a, b) = ax + by
    // a,b的线性组合系数,存在x,y中,返回 GCD(a,b)
    // 递归式: a = bq + t
    //        d = x'b + y't
    //    代入: d = x'b + y'(a - bq)
    //   得到 a系数 y', b系数 x' - qy'
    int extended_euclid(int a, int b, int &x, int &y)
    {
         int d;
         if(b == 0) {x = 1;     y = 0;     return a;}
         d = extended_euclid(b, a % b, y, x);
         y -= a / b * x;
         return d;
    }
    /***************************************************/
    
    #endif // GCD_H
  • 相关阅读:
    ubuntu14.4开启ftp服务
    ubuntu14.4安装gtx970显卡驱动的艰辛历程
    jquery.dataTables的用法
    win7上安装theano keras深度学习框架
    使用BeanUtils设置属性转换String到Date类型
    keras在win7下环境搭建
    Python-try except else finally有return时执行顺序探究
    MySQL-EXPLAIN用法详解
    PHP-Windows下搭建Nginx+PHP环境
    PHP-php.ini中文版
  • 原文地址:https://www.cnblogs.com/threef/p/3210439.html
Copyright © 2011-2022 走看看