|
楼主 |
发表于 2023-2-15 09:43
|
显示全部楼层
本帖最后由 ysr 于 2023-2-15 03:29 编辑
Private Sub Command1_Click()
Dim a, B, c
a1 = Trim(Text1)
B1 = Val(Text2)
a1 = qxdcm(2, Trim(a1))
B = 1
Do While B <= Val(6)
s2 = 2
a = 2
Do While Val(s2) <= 2 * Val(B)
If InStr(Sqr(s2), ".") > 0 Then
s3 = 0
C2 = 4 * (B * (B + 1) - s2)
p = MPC1(Trim(C2), Trim(B1))
If Right(p, 1) Mod 2 = 0 Then
p = MPC1(Trim(p), 1)
Else
p = p
End If
Do While InStr(fenjieyinzi0(Trim(p)), "*") > 0 And s3 <= 3
s3 = s3 + 1
p = Val(p + 6)
Loop
Else
s2 = s2
End If
p1 = MPC1(Trim(p), Trim(a1))
p2 = MPC1(Trim(p1), 2)
If InStr(fenjieyinzi0(Trim(p)), "*") = 0 And InStr(fenjieyinzi0(Trim(p1)), "*") = 0 And InStr(fenjieyinzi0(Trim(p2)), "*") = 0 Then
s = s & "/" & p & "/" & p1 & "/" & p2 & vbCrLf
s1 = s1 + 1
Else
s1 = s1
End If
a = MPC1(Trim(a), 1)
s2 = Val(s2 + 1)
Loop
B = Val(B + 1)
Loop
If s1 > 0 Then
Text3 = s
Else
Text3 = "无解"
End If
End Sub
Private Sub Command2_Click()
Text1 = ""
Text2 = ""
Text3 = ""
End Sub
Private Function qxdcm(sa As String, sb As String) As String
Dim a, B
a = sa: B = sb
If B = 1 Then
qxdcm = a
ElseIf B = 0 Then
qxdcm = 1
Else
a1 = a
Do While B > 1
s = Int(Log(B) / Log(2))
s1 = 0
Do While s1 < s
a = MbC(Trim(a), Trim(a))
s1 = s1 + 1
Loop
a2 = a
B = B - 2 ^ s
a = a1
If s2 > 0 Then
a3 = MbC(Trim(a3), Trim(a2))
Else
a3 = a2
End If
s2 = s2 + 1
Loop
If B = 1 Then
qxdcm = MbC(Trim(a3), Trim(a1))
Else
qxdcm = a3
End If
End If
End Function |
|