数学中国

 找回密码
 注册
搜索
热搜: 活动 交友 discuz
12
返回列表 发新帖
楼主: ysr

计算标准佩尔方程x^2-Dy^2=1的最小解的vb程序

[复制链接]
 楼主| 发表于 2025-4-26 19:46 | 显示全部楼层
计算标准佩尔方程x^2-Dy^2=1的最小解的python程序
while True:
    try:
        a = 1
        b = 0
        c = input('请输入一个数字:')
        c = eval(c)
        d=c**0.5
        a0=int(d)
        a1=a0
        r=d
        p0=a0
        q0=1
        r=1/(r-a1)
        a1=int(r)
        p1=a0*a1+1
        q1=a1
        s=2
        while int(1/(r-a1))!=2*a0 :
            s+=1
            r=1/(r-a1)
            a1=int(r)
            p2=a1*p1+p0
            q2=a1*q1+q0
            p0=p1
            q0=q1
            p1=p2
            q1=q2
        if s % 2 == 0 :
            x0=p1
            y0=q1
        else :
            x0=2*p1*p1+1
            y0=2*p1*q1
        print(x0,y0)
    except:exit()
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-4-26 19:54 | 显示全部楼层
输入5741,输出:
循环节长度 2645 循环节  75/1/3/2/1/37/5/5/37/1/2/4/14/1/11/1/4/3/11/26/1/1/1/7/11/1/2/19/1/2/……………………
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-4-28 19:18 | 显示全部楼层
Private Sub Command1_Click()
Dim x, y
x = Trim(Text1)
y = Trim(Text2)
x = Replace(Trim(x), " ", "")
y = Replace(Trim(y), " ", "")
A = MbC(Trim(x), Trim(x))
B = MbC(Trim(y), Trim(y))
B = MbC(Trim(B), 313)
If MBJC(Trim(A), Trim(B)) >= 0 Then
c = MPC(Trim(A), Trim(B))
Else
c = "-" & MPC(Trim(B), Trim(A))
End If


Text3 = "左边=" & c

End Sub

Private Sub Command2_Click()
Text1 = ""
Text2 = ""
Text3 = ""

End Sub
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-4-28 23:27 | 显示全部楼层
Private Sub Command1_Click()
'计算标准佩尔方程x^2-Dy^2=1的最小解,D的数值不能太大
Dim d, a0, r
d = Val(Text1)
Print Date
Print Time
a0 = Int(Sqr(d))
a1 = a0
r = Sqr(d)
p0 = a0
q0 = 1
Print p0
r = 1 / (r - a1)
a1 = Int(r)
p1 = a0 * a1 + 1
q1 = a1
s1 = 1
Print p1
If a1 = 2 * a0 Then
p1 = p0: q1 = q0
Else
s1 = 2
Do While Int(1 / (r - a1)) <> 2 * a0
s1 = s1 + 1
r = 1 / (r - a1)
a1 = Int(r)
  p2 = MPC1(MbC(Val(a1), Trim(p1)), Trim(p0))
  Print p2
q2 = MPC1(MbC(Val(a1), Trim(q1)), Trim(q0))

p0 = p1: q0 = q1
p1 = p2: q1 = q2

Loop
End If

If Val(s1) Mod 2 = 0 Then
Text2 = "最小解为: x0=" & p1 & " y0=" & q1 & " 循环节长度:" & Val(s1)
Else
Text2 = "最小解为: x0=" & MPC1(MbC(2, MbC(Trim(p1), Trim(p1))), 1) & " y0=" & MbC(2, MbC(Trim(p1), Trim(q1))) & " 循环节长度:" & Val(s1)
End If

End Sub

Private Sub Command2_Click()
Text1 = ""
Text2 = ""
Me.Cls
End Sub
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|数学中国 ( 京ICP备05040119号 )

GMT+8, 2025-4-30 13:36 , Processed in 0.093718 second(s), 13 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表