zoukankan      html  css  js  c++  java
  • 扩展欧几里德算法,直线上的点

    课本上关于这一节讲得不是很清楚

    部分内容参考自:http://www.cnblogs.com/frog112111/archive/2012/08/19/2646012.html

    扩展欧几里德算法

    基本算法:对于不完全为 0 的非负整数 a,b,gcd(a,b)表示 a,b 的最大公约数,必然存在整数对 x,y ,使得 gcd(a,b)=ax+by。

    扩展欧几里德算法的应用主要有以下三方面:

    (1)求解不定方程;

    (2)求解模线性方程(线性同余方程);

    (3)求解模的逆元;

    (1):

      设a,b,c为任意整数,g=gcd(a,b),方程ax+by=g的一组解为(x0,y0),则当c为g的倍数时,ax+by=c的一组解为(p0,q0)=(x0*c/g,y0*c/g),方程的其他解为(pi,qi)=(p0 + b/g * t,q0-a/g*t)其中t为任意值;当c不为g的倍数时,不存在解

    d的初值不用管?  

    //算法,解方程ax+by=gcd(a,b),其中d=gcd(a,b),x,y初始值任意即可 
    void MEuclid(int a,int b,int &d,int &x,int &y)
    {
     if(b==0){d=a;x=1;y=0;return;}
     else     {MEuclid(b,a%b,d,y,x);
            y-=x*(a/b);
        }
    }
    View Code
  • 相关阅读:
    Dialog对话框
    Intent的七大属性
    Activity启动模式
    Android知识体系
    Activity生命周期
    Intent实现页面跳转和传值
    Android超链接
    上传文件
    XMLSAX解析
    XmlPull
  • 原文地址:https://www.cnblogs.com/acbingo/p/4492180.html
Copyright © 2011-2022 走看看