|

楼主 |
发表于 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 |
|