ysr 发表于 2024-1-12 20:44

输入:a=1.37802458133561048242,b=293759519593.64012035043484344192,c=15655500003535429340849.38533692448852667122,d=1739500000376505509005.91714322665987891016,e=-4391591111415034403665548945222373191616413.14102011358471248227;输出结果:    x1,2=-103539272529.5357185833+ -17764530690.0943652860,x3,4=-3047911608.0115008949+ -17764530689.5905604359

ysr 发表于 2024-1-12 20:52

-103539272529.5357185833+17764530690.0943652860=-85,774,741,839.4413532973
-3047911608.0115008949+17764530689.5905604359=14,716,619,081.579059541

71058122759-14,716,619,081=56,341,503,678 这个低于实际了,这个四次方程方法效果不好。

ysr 发表于 2024-1-12 20:57

-103539272529.5357185833-17764530690.0943652860=-121,303,803,219.6300838693

-121,303,803,219.6300838693+71058122759=-50,245,680,460.6300838693
121,303,803,219.6300838693-71058122759=50,245,680,460.6300838693 这个也远低于实际了。

ysr 发表于 2024-1-12 21:19

85,774,741,839+71058122759=156,832,864,598,
156,832,864,598/2=78,416,432,299太大了,

85,774,741,839-14,716,619,081=71,058,122,758,
56,341,503,678+50,245,680,460=106,587,184,138,
106,587,184,138/2=53,293,592,069,

53,293,592,069+14,716,619,081=68,010,211,150 这个也是低于实际的,此方法效果不好。

ysr 发表于 2024-1-12 22:32

ysr 发表于 2024-1-11 01:40
2374834325+68683288434=71,058,122,759,

这个更接近实际,此方法好像还是有点效果的。

输入m=6958000001674999998649 p=71058122759 输出p2=71000484941这个更接近实际!

代码如下:

Private Sub Command1_Click()
Dim m, n
m = Trim(Text1)
n = Trim(Text2)
b16 = "9940934683879298"
q = zhengchuqy(MCC1(Trim(m), Trim(n)))
q = q & String(10, "0")
B1 = zhengchuqy(MCC1(MPC(Trim(q), 1 & String(10, "0")), MPC(Trim(n), 1)))
b2 = zhengchuqy(MCC1(MPC(Trim(B1), 1 & String(10, "0")), 2))
b3 = MbC(Trim(b2), Trim(b16))
b4 = Mid(b3, 1, Len(b3) - 16)
b5 = MPC1(1 & String(10, "0"), MbC(Trim(b4), 2))
q1 = MPC(Trim(q), MbC(Trim(n), Trim(b5)))
Print q1
r = zhengchuqyushu(MCC1(Trim(m), Trim(n)))
r1 = r & String(10, "0")
a1 = b5
b6 = MbC(Trim(a1), MbC(Trim(n), 2))
c6 = MPC(MPC1(Trim(r1), MbC(Trim(q), Trim(n))), MbC(MbC(Trim(n), Trim(n)), Trim(a1)))

d6 = MPC1(MbC(Trim(b6), Trim(b6)), MbC(MbC(Trim(a1), Trim(c6)), 4))
d7 = zhengchuqy(MBBC(Trim(d6)))
b7 = MPC(Trim(d7), Trim(b6))
f1 = zhengchuqy(MCC1(Trim(b7), MbC(Trim(a1), 2)))
n1 = MPC1(Trim(n), MbC(Trim(f1), 2))
n2 = MPC(Trim(n), Trim(f1))
Text3 = "输入m=" & m & " p=" & n & "输出 p2=" & n2



End Sub

ysr 发表于 2024-1-12 22:36

输入m=6958000001674999998649 p=71058122759输出 p2=71000094129

代码如下:

Private Sub Command1_Click()
Dim m, n
m = Trim(Text1)
n = Trim(Text2)
b16 = "9940534683879298"
q = zhengchuqy(MCC1(Trim(m), Trim(n)))
q = q & String(10, "0")
B1 = zhengchuqy(MCC1(MPC(Trim(q), 1 & String(10, "0")), MPC(Trim(n), 1)))
b2 = zhengchuqy(MCC1(MPC(Trim(B1), 1 & String(10, "0")), 2))
b3 = MbC(Trim(b2), Trim(b16))
b4 = Mid(b3, 1, Len(b3) - 16)
b5 = MPC1(1 & String(10, "0"), MbC(Trim(b4), 2))
q1 = MPC(Trim(q), MbC(Trim(n), Trim(b5)))
Print q1
r = zhengchuqyushu(MCC1(Trim(m), Trim(n)))
r1 = r & String(10, "0")
a1 = b5
b6 = MbC(Trim(a1), MbC(Trim(n), 2))
c6 = MPC(MPC1(Trim(r1), MbC(Trim(q), Trim(n))), MbC(MbC(Trim(n), Trim(n)), Trim(a1)))

d6 = MPC1(MbC(Trim(b6), Trim(b6)), MbC(MbC(Trim(a1), Trim(c6)), 4))
d7 = zhengchuqy(MBBC(Trim(d6)))
b7 = MPC(Trim(d7), Trim(b6))
f1 = zhengchuqy(MCC1(Trim(b7), MbC(Trim(a1), 2)))
n1 = MPC1(Trim(n), MbC(Trim(f1), 2))
n2 = MPC(Trim(n), Trim(f1))
Text3 = "输入m=" & m & " p=" & n & "输出 p2=" & n2




End Sub

ysr 发表于 2024-1-12 22:39

输入m=6958000001674999998649 p=71058122759输出 p2=70999996427

代码如下:

Private Sub Command1_Click()
Dim m, n
m = Trim(Text1)
n = Trim(Text2)
b16 = "9940434683879298"
q = zhengchuqy(MCC1(Trim(m), Trim(n)))
q = q & String(10, "0")
B1 = zhengchuqy(MCC1(MPC(Trim(q), 1 & String(10, "0")), MPC(Trim(n), 1)))
b2 = zhengchuqy(MCC1(MPC(Trim(B1), 1 & String(10, "0")), 2))
b3 = MbC(Trim(b2), Trim(b16))
b4 = Mid(b3, 1, Len(b3) - 16)
b5 = MPC1(1 & String(10, "0"), MbC(Trim(b4), 2))
q1 = MPC(Trim(q), MbC(Trim(n), Trim(b5)))
Print q1
r = zhengchuqyushu(MCC1(Trim(m), Trim(n)))
r1 = r & String(10, "0")
a1 = b5
b6 = MbC(Trim(a1), MbC(Trim(n), 2))
c6 = MPC(MPC1(Trim(r1), MbC(Trim(q), Trim(n))), MbC(MbC(Trim(n), Trim(n)), Trim(a1)))

d6 = MPC1(MbC(Trim(b6), Trim(b6)), MbC(MbC(Trim(a1), Trim(c6)), 4))
d7 = zhengchuqy(MBBC(Trim(d6)))
b7 = MPC(Trim(d7), Trim(b6))
f1 = zhengchuqy(MCC1(Trim(b7), MbC(Trim(a1), 2)))
n1 = MPC1(Trim(n), MbC(Trim(f1), 2))
n2 = MPC(Trim(n), Trim(f1))
Text3 = "输入m=" & m & " p=" & n & "输出 p2=" & n2




End Sub

ysr 发表于 2024-1-15 22:33

本帖最后由 ysr 于 2024-1-15 15:38 编辑

Private Function fenjiecx(sa As String, sb As String) As String '分解程序

Dim a, b, c
m = sa
p = sb
q = zhengchuqy(MCC1(Trim(m), Trim(p)))
m1 = Right(m, 2)
n1 = zhengchuqy(MCC(Trim(p), 2))
sd = 22
d = zhengchuqy(MCC(Trim(m), 4))
n1 = zhengliys2(Trim(n1), Val(sd))
d = zhengliys2(Trim(d), Val(sd))
If m1 Mod 4 = 1 Then
b = zhengchuqy(mcc2(MPC(zhengchuqy(mcc2(MPC(Trim(q), 1), Trim(p), Val(sd))), 1 & String(Val(sd), "0")), 2, Val(sd)))
Else
b = zhengchuqy(mcc2(MPC(zhengchuqy(mcc2(MPC(Trim(q), 3), Trim(p), Val(sd))), 1 & String(Val(sd), "0")), 2, Val(sd)))
End If
x = zhengliys2(1, Len(p) - 1)
bxn1 = mbc2(mbc2(Trim(b), Trim(x), Val(sd)), Trim(n1), Val(sd))
a = 4
b2 = mpc3(mpc2(mpc2(mbc2(8 & String(Val(sd), "0"), Trim(n1), Val(sd)), mbc2(mbc2(4 & String(Val(sd), "0"), Trim(b), Val(sd)), Trim(x), Val(sd))), mbc2(2 & String(Val(sd), "0"), Trim(x), Val(sd))), 2 & String(Val(sd), "0"))
If m1 Mod 4 = 1 Then
c = mpc2(mpc2(mpc3(mpc2(mpc2(mbc2(mbc2(4 & String(Val(sd), "0"), Trim(n1), Val(sd)), Trim(n1), Val(sd)), mbc2(8 & String(Val(sd), "0"), Trim(bxn1), Val(sd))), mbc2(mbc2(4 & String(Val(sd), "0"), Trim(n1), Val(sd)), Trim(x), Val(sd))), mbc2(2 & String(Val(sd), "0"), Trim(n1), Val(sd))), mbc2(mbc2(2 & String(Val(sd), "0"), Trim(b), Val(sd)), Trim(x), Val(sd))), mbc2(2 & String(Val(sd), "0"), Trim(x), Val(sd)))
d = mpc2(mpc2(mpc2(mpc2(mbc2(mbc2(2 & String(Val(sd), "0"), Trim(x), Val(sd)), Trim(d), Val(sd)), mbc2(mbc2(4 & String(Val(sd), "0"), Trim(bxn1), Val(sd)), Trim(n1), Val(sd))), mbc2(mbc2(2 & String(Val(sd), "0"), Trim(n1), Val(sd)), Trim(x), Val(sd))), mbc2(2 & String(Val(sd), "0"), Trim(bxn1), Val(sd))), mbc2(mbc2(2 & String(Val(sd), "0"), Trim(n1), Val(sd)), Trim(x), Val(sd)))
Else

c = mpc2(mpc2(mpc3(mpc2(mpc2(mbc2(mbc2(4 & String(Val(sd), "0"), Trim(n1), Val(sd)), Trim(n1), Val(sd)), mbc2(8 & String(Val(sd), "0"), Trim(bxn1), Val(sd))), mbc2(mbc2(4 & String(Val(sd), "0"), Trim(n1), Val(sd)), Trim(x), Val(sd))), mbc2(2 & String(Val(sd), "0"), Trim(n1), Val(sd))), mbc2(mbc2(2 & String(Val(sd), "0"), Trim(b), Val(sd)), Trim(x), Val(sd))), mbc2(4 & String(Val(sd), "0"), Trim(x), Val(sd)))
d = mpc2(mpc2(mpc2(mpc2(mbc2(mbc2(2 & String(Val(sd), "0"), Trim(x), Val(sd)), Trim(d), Val(sd)), mbc2(mbc2(4 & String(Val(sd), "0"), Trim(bxn1), Val(sd)), Trim(n1), Val(sd))), mbc2(mbc2(2 & String(Val(sd), "0"), Trim(n1), Val(sd)), Trim(x), Val(sd))), mbc2(2 & String(Val(sd), "0"), Trim(bxn1), Val(sd))), mbc2(mbc2(4 & String(Val(sd), "0"), Trim(n1), Val(sd)), Trim(x), Val(sd)))
End If
b2 = shuchujg(Trim(b2), Val(sd))
c = shuchujg(Trim(c), Val(sd))
d = shuchujg(Trim(d), Val(sd))


ff = jie3cifc(Trim(b), Trim(c), Trim(d), Trim(a), 22)
If InStr(ff, ".") = 0 Then
ff = ff
Else
ff = Mid(ff, 1, InStr(ff, ".") - 1)
End If
p = MPC3(Trim(p), Trim(ff))
fenjiecx = Trim(p)
End Function

Public Function jie3cifc(a2 As String, b2 As String, c2 As String, k2 As String, sd As String) As String '3次方程
a3 = mcc2(Trim(a2), Trim(k2), Val(sd))
b3 = mcc2(Trim(b2), Trim(k2), Val(sd))
c3 = mcc2(Trim(c2), Trim(k2), Val(sd))


   
   
   ' m = 36 * Val(ja) * Val(jb) - 8 * Val(ja) ^ 3 - 108 * Val(jc)
   If mbjc2(Trim(a3), 0) = 0 And mbjc2(Trim(b3), 0) = 0 Then
   m = mbc2(-108 & String(sd, "0"), Trim(c3), Val(sd))
   
   n4 = qdfh(mbc2(Trim(m), Trim(m), Val(sd)))
   Else
   
   m1 = mbc2(mbc2(Trim(a3), Trim(b3), Trim(sd)), Val(36) & String(sd, "0"), Val(sd))
   m2 = mbc2(mbc2(mbc2(Trim(a3), Trim(a3), Trim(sd)), Trim(a3), Val(sd)), Val(8) & String(sd, "0"), Val(sd))
   m3 = mbc2(Trim(c3), Val(108) & String(sd, "0"), Val(sd))
   m = mpc2(mpc2(Trim(m1), Trim(m2)), Trim(m3))
Print "m="; m

'n1 = Val(m) ^ 2 + (12 * Val(B) - 4 * Val(A) ^ 2) ^ 3

n1 = mbc2(Trim(m), Trim(m), Val(sd))
    n2 = mpc2(mbc2(Trim(b3), Val(12) & String(sd, "0"), Val(sd)), mbc2(mbc2(Trim(a3), Trim(a3), Val(sd)), Val(4) & String(sd, "0"), Val(sd)))
   n3 = mbc2(mbc2(Trim(n2), Trim(n2), Val(sd)), Trim(n2), Val(sd))
   n4 = mpc3(Trim(n1), Trim(n3))
   End If
   fn4 = fhys(Trim(n4))
    n5 = mbbc2(qqdl(qdfh(Trim(n4))), Val(sd))
   Print "n5="; n5
   
    'If n1 < 0 And m < 0 Then
    If Val(fn4) < 0 And Val(fhys(Trim(m))) < 0 Then
    'n=(93312R^6+311040R^5+285120R^4+221824R^3+27020R^2+3712R+320)^(1/2)
    'a=-(2+81k)
    'm=216r^3+360r^2+128r-8
    'k=(n^2/m^2)/27
    ''a1=(M/8*(9t-1))^(1/3),,b1=a1*(t)^(1/2)
    '令m=19683N^6+1215N^4M^2+17N^2M^4-M^6,
'm1=243N^4+3N^2M^2+M^4,
'n=(m^2-m1^3)^(1/2),
'则:t=(((m+n)^(1/3)+(m-n)^(1/3))+(2*M^2+3*N^2))/(3*M^2),
''其中M≠m,N≠n,
   jq = mbbc3(mbbc2(qqdl(MPC1(mbc2(qdfh(Trim(m)), qdfh(Trim(m)), Val(sd)), mbc2(qdfh(Trim(n5)), qdfh(Trim(n5)), Val(sd)))), Val(sd)), Val(sd))
   jq3 = mcc2(Trim(n5), Trim(m), Val(sd))
   jq1 = jsfanzq(mcc2(Trim(n5), Trim(m), Val(sd)), Val(sd))
   Print "jq3="; jq3
   Print "jq1="; jq1
   q1 = mbc2(Trim(jq), jsyuxian(mcc2(Trim(jq1), 3 & String(sd, "0"), Val(sd)), Val(sd)), Val(sd))
   
   Print "q1="; q1
   
   If Val(fhys(Trim(q1))) > 0 Then
q = tjfh(Trim(q1), Val(-1))
Else
q = qdfh(Trim(q1))
End If
   jq3 = mbbc2(MPC(1 & String(sd, "0"), mbc2(jsyuxian(mcc2(Trim(jq1), 3 & String(sd, "0"), Val(sd)), Val(sd)), jsyuxian(mcc2(Trim(jq1), 3 & String(sd, "0"), Val(sd)), Val(sd)), _
   Val(sd))), Val(sd))
   jq2 = tjfh(Trim(jq3), Val(-1))
   Print "jq2="; jq2
   
   qa = mbc2(Trim(jq), Trim(jq2), Val(sd))
   p = q
   pa = qa
Else
'If n1 < 0 And m > 0 Then
If Val(fn4) < 0 And MBJC(qdfh(Trim(m)), 0) > 0 Then

jq = mbbc3(mbbc2(qqdl(MPC1(mbc2(qdfh(Trim(m)), qdfh(Trim(m)), Val(sd)), mbc2(qdfh(Trim(n5)), qdfh(Trim(n5)), Val(sd)))), Val(sd)), Val(sd))
   jq1 = jsfanzq(mcc2(Trim(n5), Trim(m), Val(sd)), Val(sd))
   jq3 = mcc2(Trim(n5), Trim(m), Val(sd))
   q = mbc2(Trim(jq), jsyuxian(mcc2(Trim(jq1), 3 & String(sd, "0"), Val(sd)), Val(sd)), Val(sd))
   jq2 = mbbc2(MPC(1 & String(sd, "0"), mbc2(jsyuxian(mcc2(Trim(jq1), 3 & String(sd, "0"), Val(sd)), Val(sd)), jsyuxian(mcc2(Trim(jq1), 3 & String(sd, "0"), Val(sd)), Val(sd)), _
   Val(sd))), Val(sd))
   Print "jq3="; jq3
   Print "jq1="; jq1
   Print "q"; q
   Print "jq2="; jq2
   qa = mbc2(Trim(jq), Trim(jq2), Val(sd))
   p = q
   pa = qa
Else
'If Val(m) + Val(n2) < 0 Then
If fhys(mpc3(Trim(m), Trim(n5))) = -1 Then
p = "-" & mbbc3(qdfh(mpc3(Trim(m), Trim(n5))), Val(sd))
Else
p = mbbc3(mpc3(Trim(m), Trim(n5)), Val(sd))

End If

'If Val(m) < Val(n2) Then
If mbjc2(Trim(m), Trim(n5)) = -1 Then
'q = -(Val(n2) - Val(m)) ^ (1 / 3)
q = "-" & mbbc3(qdfh(mpc2(Trim(n5), Trim(m))), Val(sd))
Else
q = mbbc3(mpc2(Trim(m), Trim(n5)), Val(sd))

End If



End If


End If

'If a = 0 And b = 0 Then
If Val(fn4) > 0 And mbjc2(Trim(n4), 0) <> 0 Then'Val(n4) > 0 Or mbjc2(Trim(n4), 0) = 0
tx1 = mcc2(mpc2(mpc3(Trim(p), Trim(q)), mbc2(Trim(a3), 2 & String(sd, "0"), Val(sd))), 6 & String(sd, "0"), Val(sd))
ftx1 = fhys(Trim(tx1))
tx4 = mcc2(mpc3(mpc3(Trim(p), Trim(q)), mbc2(Trim(a3), 4 & String(sd, "0"), Val(sd))), 12 & String(sd, "0"), Val(sd))
If Val(fhys(Trim(tx4))) > 0 Then
tx2 = tjfh(Trim(tx4), Val(-1))
Else
tx2 = qdfh(Trim(tx4))
End If
' -(Val(p) + Val(q) + 4 * Val(A)) / 12 & "+" & Abs((3 ^ (1 / 2) * (Val(p) - Val(q)))) / 12 & "i数据太大有误差"
' -(Val(p) + Val(q) + 4 * Val(A)) / 12 & "-" & Abs((3 ^ (1 / 2) * (Val(p) - Val(q)))) / 12 & "i裳〈笫莞呔鹊�"
tx3 = zhengchuqy(MCC1(qdfh(mbc2(mpc2(Trim(p), Trim(q)), zhengchuqy(MBBC(3 & String(2 * Val(sd), "0"))), Val(sd))), 12))
jie3cifc = shuchujg(Trim(tx1), Val(sd))

Else
If Mid(fn4, 1, 1) = "-" And Trim(m) = 0 Or Trim(n5) = 0 Then
tx1 = mcc2(mpc2(mpc3(Trim(p), Trim(q)), mbc2(Trim(a3), 2 & String(sd, "0"), Val(sd))), 6 & String(sd, "0"), Val(sd))
ftx1 = fhys(Trim(tx1))
tx4 = mcc2(mpc3(mpc3(Trim(p), Trim(q)), mbc2(Trim(a3), 4 & String(sd, "0"), Val(sd))), 12 & String(sd, "0"), Val(sd))
' -(Val(p) + Val(q) + 4 * Val(A)) / 12 & "+" & Abs((3 ^ (1 / 2) * (Val(p) - Val(q)))) / 12 & "i数据太大有误差"
' -(Val(p) + Val(q) + 4 * Val(A)) / 12 & "-" & Abs((3 ^ (1 / 2) * (Val(p) - Val(q)))) / 12 & "i可选大数据高精度的"
tx3 = mcc2(mbc2(mpc2(Trim(p), Trim(q)), zhengchuqy(MBBC(3 & String(2 * Val(sd), "0"))), Val(sd)), 12 & String(sd, "0"), Val(sd))
If Val(fhys(Trim(tx4))) > 0 Then
tx2 = tjfh(Trim(tx4), Val(-1))
Else
tx2 = qdfh(Trim(tx4))
End If
tx1 = shuchujg(Trim(tx1), Val(sd))
tx12 = shuchujg(mpc3(Trim(tx2), Trim(tx3)), Val(sd))
tx13 = shuchujg(mpc2(Trim(tx2), Trim(tx3)), Val(sd))
tx14 = tx1 & "/" & tx12 & "/" & tx13
jie3cifc = tx1

Else

'd = mcc2(mpc2(mpc3(Trim(p), Trim(q)), mbc2(Trim(a3), 2 & String(sd, "0"), Val(sd))), 6 & String(sd, "0"), Val(sd))
'd = mcc2(MPC(qdfh(mbc2(Trim(a3), 2 & String(sd, "0"), Val(sd))), mpc3(Trim(p), Trim(q))), 6 & String(sd, "0"), Val(sd))
'mpc2减法器有问题?
'fd = fhys(Trim(d))
tx1 = mcc2(mpc2(mpc3(Trim(p), Trim(q)), mbc2(Trim(a3), 2 & String(sd, "0"), Val(sd))), 6 & String(sd, "0"), Val(sd))
ftx1 = fhys(Trim(tx1))
tx4 = mcc2(mpc3(mpc3(Trim(p), Trim(q)), mbc2(Trim(a3), 4 & String(sd, "0"), Val(sd))), 12 & String(sd, "0"), Val(sd))
' -(Val(p) + Val(q) + 4 * Val(A)) / 12 & "+" & Abs((3 ^ (1 / 2) * (Val(p) - Val(q)))) / 12 & "i数据太大有误差"
' -(Val(p) + Val(q) + 4 * Val(A)) / 12 & "-" & Abs((3 ^ (1 / 2) * (Val(p) - Val(q)))) / 12 & "i可选大数据高精度的"
tx3 = mcc2(mbc2(mpc3(Trim(pa), Trim(qa)), zhengchuqy(MBBC(3 & String(2 * Val(sd), "0"))), Val(sd)), 12 & String(sd, "0"), Val(sd))
If Val(fhys(Trim(tx4))) > 0 Then
tx2 = tjfh(Trim(tx4), Val(-1))
Else
tx2 = qdfh(Trim(tx4))
End If
tx1 = shuchujg(Trim(tx1), Val(sd))
tx12 = shuchujg(mpc3(Trim(tx2), Trim(tx3)), Val(sd))
tx13 = shuchujg(mpc2(Trim(tx2), Trim(tx3)), Val(sd))
tx14 = tx1 & "/" & tx12 & "/" & tx13
jie3cifc = tx1

End If

End If







End Function

Private Function max(ByVal lists As String) As String
Dim temp As String
Dim a() As String
a = Split(lists, "/")
Dim b As Long
temp = a(0)
For b = 0 To UBound(a)
If Abs(temp) < Abs(a(b)) Then temp = a(b)
Next
max = temp
End Function

ysr 发表于 2024-1-15 23:04

Private Function qdqiandao0(sa As String) As String
Do While Left(sa, 1) = "0"
sa = Mid(sa, 2)
Loop
If Len(sa) = 0 Then
qdqiandao0 = 0
Else
qdqiandao0 = sa
End If
End Function

Private Function jsmssushu(sa As String) As String
Dim B
B = 1
Do While c <= sa - 1
B = MbC(Trim(B), 2)
c = c + 1
Loop
jsmssushu = MPC(Trim(B), 1)
End Function

Private Function fenjieyinzi0(A As String) As String
X = 3
Do While InStr(MCC(Trim(A), 2), "/") = 0 And MBJC(Trim(A), 4) >= 0


If B = 0 Then
fenjieyinzi0 = fenjieyinzi0 & "2"
B = 1
Else
fenjieyinzi0 = fenjieyinzi0 & "*2"
End If
A = MCC(Trim(A), 2)
k = A

Loop

Do While MBJC(Trim(A), "0001") > 0
Do While MBJC(Trim(X), zhengchuqy(MBBC(Trim(A)))) <= 0
Do While InStr(MCC1(Trim(A), Trim(X)), "/") = 0 And MBJC(Trim(A), MbC(Trim(X), Trim(X))) >= 0

If B = 0 Then
fenjieyinzi0 = fenjieyinzi0 & X
B = 1
Else
fenjieyinzi0 = fenjieyinzi0 & "*" & X
End If
A = MCC1(Trim(A), Trim(X))
Loop

X = MPC1(Trim(X), 2)
Loop

k = A
A = 1
Loop

If B = 1 Then
fenjieyinzi0 = fenjieyinzi0 & "*" & k
Else
fenjieyinzi0 = "这是一个质数"
End If
End Function



Private Function fenjieyinzi(sa As String) As String
Dim X, A, B, k As String
A = Val(sa)

X = 3
If A <= 1 Or A > Int(A) Then
If A = 1 Then
fenjieyinzi = "它既不是质数,也不是合数"

Else
MsgBox "error"
End If

Else

Do While A / 2 = Int(A / 2) And A >= 4

If B = 0 Then
fenjieyinzi = fenjieyinzi & "2"
B = 1
Else
fenjieyinzi = fenjieyinzi & "*2"
End If
A = A / 2
k = A

Loop

Do While A > 1
Do While X <= Sqr(A)
Do While A / X = Int(A / X) And A >= X * X

If B = 0 Then
fenjieyinzi = fenjieyinzi & X
B = 1
Else
fenjieyinzi = fenjieyinzi & "*" & X
End If
A = A / X
Loop

X = X + 2
Loop

k = A
A = 1
Loop

If B = 1 Then
fenjieyinzi = fenjieyinzi & "*" & k
Else
fenjieyinzi = "这是一个质数"
End If





End If

End Function

Private Function zhengchuqyushu(sa As String) As String
If InStr(sa, "/") = 0 Then
zhengchuqyushu = 0
Else
zhengchuqyushu = Mid(sa, InStr(sa, "/") + 1)
End If


End Function
页: 1 2 3 4 5 6 7 [8]
查看完整版本: [求助]素性测试