`
bardo
  • 浏览: 378276 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
D1407912-ab64-3e76-ae37-b31aa4afa398
浅述PHP设计模式
浏览量:11806
9d6df9f7-91da-3787-a37c-0e826525dd5d
Zend Framewor...
浏览量:10113
85b628bd-a2ed-3de2-a4b1-0d34985ae8b6
PHP的IDE(集成开发环...
浏览量:9501
社区版块
存档分类
最新评论

二元一次不定方程的大衍求一术解法的VB源码

    博客分类:
  • VB
阅读更多

二元一次不定方程的大衍求一术解法的VB源码

 

 

    我们清楚,二元一次不定方程可用欧几里德扩展算法,或者同余方程的欧拉解法,以及中国传统的方法大衍求一术来解。同余方程的欧拉解法程序算法复杂,且需经递归。而欧几里德扩展算法如果不递归,则也需要进行回退求解。所以,只有大衍求一术才是最简单的算法。这是08年就写出的老代码了,VB6的源码。从本人其它博客现搬到iteye.com网站,分享给更多的人。以下是VB程序的源码。

Option Explicit

'visual basic source code for finding x, y such that linear diophantine equation
'Copyright: 2008 Bardo QI

Function gcd(ByVal a As Long, ByVal b As Long)
    'get great common division
    Dim c As Long, tmp As Long
   
    If (a < b) Then
        tmp = a
        a = b
        b = tmp
    End If

    Do While (b <> 0)
        c = b
        b = a Mod b
        a = c
    Loop
    gcd = a

End Function

Function gma(ByVal g As Long, ByVal m As Long) As Long
    'get special solution for linear diophantine: ax+by=1
    Dim LT As Long, RT As Long, LD As Long, RD As Long
    Dim tmp As Long, x As Long
   
    If Abs(g) > Abs(m) Then
        g = g Mod m
    End If
   
    LT = 1: LD = 0: RT = g: RD = m
    x = 0

    Do While (RT <> 1)
        x = RD \ RT
        RD = RD Mod RT
        LD = x * LT + LD
       
        x = RT \ RD
        If RD = 1 Then
            LT = (x - 1) * LD + LT
            RT = 1
            Exit Do
        Else
            RT = RT Mod RD
        End If
        LT = x * LD + LT
    Loop
    gma = LT
   
End Function

Function Diophantine(ByVal a As Long, ByVal b As Long, ByVal c As Long, _
                    x As Long, y As Long, ar As Long, br As Long) As Boolean
    'Find the x,y such that a*x + b*y = k*gcd(a,b)
    Dim g As Long, tmp As Long, x0 As Long, y0 As Long
    Dim am As Long, bm As Long, t As Long
   
    g = gcd(Abs(a), Abs(b))
    If (c Mod g <> 0) Then
        Diophantine = False: Exit Function
    End If
    If a < 0 Then
        a = -a: b = -b: c = -c
    End If
    br = a / g: ar = b / g
    am = br: bm = ar
    If ar > br Then
        bm = ar Mod br
    End If
    If am > bm Then
        y0 = gma(Abs(bm), Abs(am))
    Else
        y0 = 1
    End If
    If (b < 0) Then
        y0 = -y0
    End If
    x0 = (1 - ar * y0) / br
    x = c * x0 / g: y = c * y0 / g
    'let y to mininized value
    t = y \ br
    y = y Mod br
    x = x + ar * t
   
    ar = -ar
   
    Diophantine = True
   
End Function

分享到:
评论

相关推荐

    二元一次不定方程求解 C++小程序

    说明:此程序公式为 a*x+b*y=c,输入a、b和c的值,即可计算x和y的值。 注意:a,b,c,x和y都为正整数! 声明:版权归 CSDN 用户“Schoolchild C++”所有,未经同意,不得转载,否则将视为侵权。

    二元一次方程组求解C++源代码

    在C++编程中,解决二元一次方程组是一个常见的任务,这通常涉及到线性代数中的矩阵运算。然而,给定的代码并不是处理二元一次方程组,而是求解一元二次方程(ax^2 + bx + c = 0)的根。一元二次方程的解可以通过韦达...

    二元二次不定方程解法探讨.doc

    【二元二次不定方程解法探讨】 二元二次不定方程是指含有两个变量的一类方程,通常形式为ax² + bxy + cy² + dx + ey + f = 0,其中a, b, c, d, e, f是常数,且a, c不全为零。这类方程在解决实际问题中有着广泛的...

    VB6.0实现解二元一次、三元一次方程(附源码)

    在VB6.0环境下,开发一个程序来解决二元一次方程和三元一次方程是编程技术与数学知识的结合。VB6.0(Visual Basic 6.0)是微软公司推出的一种可视化编程工具,它允许开发者通过拖放控件和编写事件驱动的代码来创建...

    解二元一次方程源码(线性方程解法)

    使用线性代数的线性方程解法解二元一次方程 欢迎斧正

    二元一次方程组源码

    综上所述,"二元一次方程组源码"项目涵盖了VB编程的基础知识,如UI设计、数据处理、算法实现、错误控制和用户交互。通过实践这个项目,不仅可以提升编程技能,还能加深对二元一次方程组解法的理解。在开发过程中,...

    二元一次方程组vb

    在VB(Visual Basic)编程环境中,我们可以利用基本的数学概念和编程技巧来解决二元一次方程组。二元一次方程组是由两个含有两个变量的一次方程组成的,每个方程都涉及到两个未知数。在数学中,解决这类问题通常采用...

    二元二次方程组的解法

    基本方法是先将二元二次方程因式分解,将其转换为两个二元一次方程,再结合另一个二元一次方程,形成新的方程组,最后通过消元或代入来求解。 在准备练习中,我们首先了解了如何对多项式进行因式分解,例如: 1. x...

    解二元一次方程组计算题.pdf

    在标题《解二元一次方程组计算题.pdf》中,我们可以提取出知识点:二元一次方程组和计算方法。二元一次方程组是由两个含两个变量的一次方程构成的方程组,其通式一般为Ax + By = E和Cx + Dy = F。解二元一次方程组的...

    【JAVA】JAVA 二元一次方程求解

    二元一次方程是指含有两个未知数(通常表示为x和y)的一次方程,形式一般为ax + by = c和dx + ey = f,其中a、b、c、d、e和f为常数,且a、b、d和e不等于零。在本项目中,我们将深入探讨如何用基础的Java编程技巧来...

    易语言源码二元一次方程组练习器易语言源码.rar

    易语言源码二元一次方程组练习器易语言源码.rar 易语言源码二元一次方程组练习器易语言源码.rar 易语言源码二元一次方程组练习器易语言源码.rar 易语言源码二元一次方程组练习器易语言源码.rar 易语言源码二元一...

    Java解二元一次不定方程[axbyc].doc

    Java解二元一次不定方程[axbyc].doc

    二元一次方程求解 VB源码 VB源文件 .VBP

    标题中的“二元一次方程求解 VB源码 VB源文件 .VBP”指的是使用Visual Basic编程语言编写的程序,该程序设计用于解决数学中的二元一次方程组问题。VB(Visual Basic)是Microsoft公司开发的一种面向对象的编程工具,...

    二元一次方程组的解

    二元一次方程组是数学中的基础概念,它由两个含有两个未知数的一次方程组成。在解决这类问题时,我们通常的目标是找到这两个未知数的值,使得这两个方程同时成立。这个过程被称为解二元一次方程组,它是初等代数的...

    二元一次方程组练习题.pdf

    二元一次方程组练习题.pdf 本资源为二元一次方程组的练习题集,涵盖了二元一次方程的基本概念、解题方法和应用。该资源共包含9大题,涵盖了二元一次方程的定义、解题方法、应用等多方面知识点。 知识点1:二元一次...

    七年级数学下册第六章二元一次方程组6.2二元一次方程组的解法列二元一次方程组解应用题专项训练新版冀教版

    "七年级数学下册第六章二元一次方程组6.2二元一次方程组的解法列二元一次方程组解应用题专项训练新版冀教版" 本资源是关于七年级数学下册第六章二元一次方程组的解法和应用题专项训练,包括了多种类型的二元一次...

    MATLAB解二元二次微分方程

    该MATLAB程序用来解二元二次微分方程,而且可以解系数变化的二元二次微分方程,并能将结果直接显示在FIGURE图中

    【教材分析】二元一次方程组_数学_初中.pdf

    不过,根据标题“【教材分析】二元一次方程组_数学_初中.pdf”,我可以对“二元一次方程组”相关的知识点进行详细的分析和阐述。 二元一次方程组是指含有两个变量的一次方程组,且每个方程都是变量的一次多项式。在...

    二元一次方程组求解

    二元一次方程组求解

Global site tag (gtag.js) - Google Analytics