数学中国

 找回密码
 注册
搜索
热搜: 活动 交友 discuz
查看: 3329|回复: 11

解一个关于x的4次方程

[复制链接]
发表于 2022-8-17 09:07 | 显示全部楼层 |阅读模式
方程如下,请问如何解,并验证结果是否正确:

x^4+2x^3+3x^2+4x+5=0.
发表于 2022-8-17 11:19 | 显示全部楼层
Maxima 输出:

\(x_1=-\frac{\sqrt{\frac{4}{\sqrt{\frac{{{\left( 10 \% i-5\right) }^{\frac{2}{3}}}-{{\left( 10 \% i-5\right) }^{\frac{1}{3}}}+5}{{{\left( 10 \% i-5\right) }^{\frac{1}{3}}}}}}-{{\left( 10 \% i-5\right) }^{\frac{1}{3}}}-\frac{5}{{{\left( 10 \% i-5\right) }^{\frac{1}{3}}}}-2}}{2}-\frac{\sqrt{\frac{{{\left( 10 \% i-5\right) }^{\frac{2}{3}}}-{{\left( 10 \% i-5\right) }^{\frac{1}{3}}}+5}{{{\left( 10 \% i-5\right) }^{\frac{1}{3}}}}}}{2}-\frac{1}{2}\)

\(x_2=\frac{\sqrt{\frac{4}{\sqrt{\frac{{{\left( 10 \% i-5\right) }^{\frac{2}{3}}}-{{\left( 10 \% i-5\right) }^{\frac{1}{3}}}+5}{{{\left( 10 \% i-5\right) }^{\frac{1}{3}}}}}}-{{\left( 10 \% i-5\right) }^{\frac{1}{3}}}-\frac{5}{{{\left( 10 \% i-5\right) }^{\frac{1}{3}}}}-2}}{2}-\frac{\sqrt{\frac{{{\left( 10 \% i-5\right) }^{\frac{2}{3}}}-{{\left( 10 \% i-5\right) }^{\frac{1}{3}}}+5}{{{\left( 10 \% i-5\right) }^{\frac{1}{3}}}}}}{2}-\frac{1}{2}\)

\(x_3=-\frac{\sqrt{-\frac{4}{\sqrt{\frac{{{\left( 10 \% i-5\right) }^{\frac{2}{3}}}-{{\left( 10 \% i-5\right) }^{\frac{1}{3}}}+5}{{{\left( 10 \% i-5\right) }^{\frac{1}{3}}}}}}-{{\left( 10 \% i-5\right) }^{\frac{1}{3}}}-\frac{5}{{{\left( 10 \% i-5\right) }^{\frac{1}{3}}}}-2}}{2}+\frac{\sqrt{\frac{{{\left( 10 \% i-5\right) }^{\frac{2}{3}}}-{{\left( 10 \% i-5\right) }^{\frac{1}{3}}}+5}{{{\left( 10 \% i-5\right) }^{\frac{1}{3}}}}}}{2}-\frac{1}{2}\)

\(x_4=\frac{\sqrt{-\frac{4}{\sqrt{\frac{{{\left( 10 \% i-5\right) }^{\frac{2}{3}}}-{{\left( 10 \% i-5\right) }^{\frac{1}{3}}}+5}{{{\left( 10 \% i-5\right) }^{\frac{1}{3}}}}}}-{{\left( 10 \% i-5\right) }^{\frac{1}{3}}}-\frac{5}{{{\left( 10 \% i-5\right) }^{\frac{1}{3}}}}-2}}{2}+\frac{\sqrt{\frac{{{\left( 10 \% i-5\right) }^{\frac{2}{3}}}-{{\left( 10 \% i-5\right) }^{\frac{1}{3}}}+5}{{{\left( 10 \% i-5\right) }^{\frac{1}{3}}}}}}{2}-\frac{1}{2}\)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-8-17 11:26 | 显示全部楼层
本帖最后由 ysr 于 2025-11-22 01:37 编辑
Ysu2008 发表于 2022-8-17 03:19
Maxima 输出:

\(x_1=-\frac{\sqrt{\frac{4}{\sqrt{\frac{{{\left( 10 \% i-5\right) }^{\frac{2}{3}}}-{ ...


谢谢您的精彩解答!但是这个不是数值解,答案无法验证。我用两种方法做的程序,分别给出结果请各位老师看看对不对?

如下这个是用《数学手册》的方法做的:(结果已经修改,代码也是修改过了)
输入1:  a=1,  b=2,  c=3,  d=4,e=5;  输出结果1:    x1,2=-0.7790981609+ -0.7870071020i,  x3,4=-0.2209018391+ -1.6929245012i

再次修改后的结果(修改了两个可调用程序mbbc2和mbbc3):
输入1:  a=1,  b=2,  c=3,  d=4,e=5;  输出结果1:    x1,2=-1.2878154796+ -0.8578967582i,  x3,4=0.2878154796+ -1.4160930802i

代码如下:
Private Sub Command1_Click()
Dim a, b, c, d, f, g
Dim ja, jb, jc
k = DeleteSpace(Text1.Text)
ja = DeleteSpace(Text2.Text)
jb = DeleteSpace(Text3.Text)
jc = DeleteSpace(Text4.Text)
jd = DeleteSpace(Text5.Text)
sd1 = DeleteSpace(Text15.Text)
If Abs(Val(sd1)) <= 10 Then
sd = 10 + 2
Else
If Len(sd1) > 3 And Abs(Val(sd1)) > 300 Then
sd = 300 + 2
Else
sd = Int(Abs(Val(sd1))) + 2
End If
End If

a2 = zhengliys2(Trim(ja), Val(sd))
b2 = zhengliys2(Trim(jb), Val(sd))

c2 = zhengliys2(Trim(jc), Val(sd))
D2 = zhengliys2(Trim(jd), Val(sd))
k2 = zhengliys2(Trim(k), Val(sd))
If MBJC(Trim(k2), 0) = 0 Then
Text4.Text = "a 不能为 0"
   Text5.Text = "a 为 0可能已不是1元4次方程"
  Else
   
a3 = mcc2(Trim(a2), Trim(k2), Val(sd))
b3 = mcc2(Trim(b2), Trim(k2), Val(sd))
c3 = mcc2(Trim(c2), Trim(k2), Val(sd))
d3 = mcc2(Trim(D2), Trim(k2), Val(sd))
jk = 1 & String(sd, "0")
ja1 = tjfh(Trim(b3), -1)
jb1 = mpc2(mbc2(Trim(a3), Trim(c3), Val(sd)), mbc2(4 & String(sd, "0"), Trim(d3), Val(sd)))
jc1 = mpc2(mpc2(mbc2(4 & String(sd, "0"), mbc2(Trim(b3), Trim(d3), Val(sd)), Val(sd)), mbc2(Trim(c3), Trim(c3), Val(sd))), mbc2(mbc2(Trim(a3), Trim(a3), Val(sd)), Trim(d3), Val(sd)))
y = jie3cifc(Trim(ja1), Trim(jb1), Trim(jc1), Trim(jk), Val(sd))
Y1 = zhengliys2(Trim(y), Val(sd))
End If
Text6 = zhengliys2(Trim(y), Val(sd))
Text8 = y
y8 = mpc2(mbc2(Trim(Y1), Trim(a3), Val(sd)), mbc2(2 & String(sd, "0"), Trim(b3), Val(sd)))
za = 1 & String(sd, "0")
zb = mbbc2(qdfh(mpc3(mpc2(mbc2(Trim(a3), Trim(a3), Val(sd)), mbc2(4 & String(sd, "0"), Trim(b3), Val(sd))), mbc2(4 & String(sd, "0"), Trim(Y1), Val(sd)))), Val(sd))
zc = mbbc2(qdfh(mpc2(mbc2(Trim(Y1), Trim(Y1), Val(sd)), mbc2(4 & String(sd, "0"), Trim(d3), Val(sd)))), Val(sd))
zb1 = mcc2(mpc3(Trim(a3), Trim(zb)), 2 & String(sd, "0"), Val(sd))
zb2 = mcc2(mpc2(Trim(a3), Trim(zb)), 2 & String(sd, "0"), Val(sd))
zc1 = mcc2(mpc3(Trim(Y1), Trim(zc)), 2 & String(sd, "0"), Val(sd))
zc2 = mcc2(qdfh(mpc2(Trim(Y1), Trim(zc))), 2 & String(sd, "0"), Val(sd))

If mbjc2(Trim(y8), 0) > 0 Then
y3 = jie2cifc(Trim(za), Trim(zb1), Trim(zc1), Val(sd))
y4 = jie2cifc(Trim(za), Trim(zb2), Trim(zc2), Val(sd))
Else
y3 = jie2cifc(Trim(za), Trim(zb1), Trim(zc2), Val(sd))
y4 = jie2cifc(Trim(za), Trim(zb2), Trim(zc1), Val(sd))
End If
Text9 = y3
Text10 = y4
Label1.Caption = Val(Label1.Caption) + 1
Text14.Text = Text14.Text & "  输入" & Label1.Caption & ":  " & "a=" & k & ",  b=" & ja & ",  c=" & jb & ",  d=" & jc _
  & ",e=" & jd & ";  输出结果" & Label1.Caption & ":    " & "x1,2=" & Text9.Text & ",  x3,4=" & Text10.Text
End Sub
回复 支持 反对

使用道具 举报

发表于 2022-8-17 11:29 | 显示全部楼层
x^4+2x^3+3x^2+4x+5=(x^2+2)(x+1)^2+3=0
方程无实数解

点评

ysr
谢谢您的关注和指导!您的判断是对的!  发表于 2022-8-17 11:37
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-8-17 11:38 | 显示全部楼层
本帖最后由 ysr 于 2025-11-22 00:48 编辑
ysr 发表于 2022-8-17 03:26
谢谢您的精彩解答!但是这个不是数值解,答案无法验证。我用两种方法做的程序,分别给出结果请各位老师 ...


下面这个是另一个方法的程序结果:
输入1:  a=1,  b=2,  c=3,  d=4,e=5;  输出结果1:    x1,2=-0.7790981610+ -1.3540192270,  x3,4=-0.2209018390+ -1.6929245011i
修改后的结果:输入:  a=1,  b=2,  c=3,  d=4,e=5;  输出结果:    x1,2=-1.2878154796+ -0.8578967583i,  x3,4=0.2878154796+ -1.4160930802i
代码如下:
Private Sub Command1_Click()
Dim a, b, c, d, f, g
Dim ja, jb, jc
k = DeleteSpace(Text1.Text)
ja = DeleteSpace(Text2.Text)
jb = DeleteSpace(Text3.Text)
jc = DeleteSpace(Text4.Text)
jd = DeleteSpace(Text5.Text)
sd1 = DeleteSpace(Text15.Text)
If Abs(Val(sd1)) <= 10 Then
sd = 10 + 2
Else
If Len(sd1) > 3 And Abs(Val(sd1)) > 300 Then
sd = 300 + 2
Else
sd = Int(Abs(Val(sd1))) + 2
End If
End If

a2 = zhengliys2(Trim(ja), Val(sd))
b2 = zhengliys2(Trim(jb), Val(sd))

c2 = zhengliys2(Trim(jc), Val(sd))
D2 = zhengliys2(Trim(jd), Val(sd))
k2 = zhengliys2(Trim(k), Val(sd))
If MBJC(Trim(k2), 0) = 0 Then
Text4.Text = "a 不能为 0"
   Text5.Text = "a 为 0可能已不是1元4次方程"
  Else
   
a3 = mcc2(Trim(a2), Trim(k2), Val(sd))
b3 = mcc2(Trim(b2), Trim(k2), Val(sd))
c3 = mcc2(Trim(c2), Trim(k2), Val(sd))
d3 = mcc2(Trim(D2), Trim(k2), Val(sd))
jk = 8 & String(sd, "0")
ja1 = mbc2("-4" & String(sd, "0"), Trim(b3), Val(sd))
jb1 = mpc2(mbc2(2 & String(sd, "0"), mbc2(Trim(a3), Trim(c3), Val(sd)), Val(sd)), mbc2(8 & String(sd, "0"), Trim(d3), Val(sd)))
jc1 = mpc2(mbc2(Trim(d3), mpc2(mbc2(4 & String(sd, "0"), Trim(b3), Val(sd)), mbc2(Trim(a3), Trim(a3), Val(sd))), Val(sd)), mbc2(Trim(c3), Trim(c3), Val(sd)))
y = jie3cifc(Trim(ja1), Trim(jb1), Trim(jc1), Trim(jk), Val(sd))
Y1 = zhengliys2(Trim(y), Val(sd))
End If
Text6 = zhengliys2(Trim(y), Val(sd))
Text8 = y
za = 1 & String(sd, "0")
z2 = mpc2(mpc3(mbc2(8 & String(sd, "0"), Trim(Y1), Val(sd)), mbc2(Trim(a3), Trim(a3), Val(sd))), mbc2(4 & String(sd, "0"), Trim(b3), Val(sd)))
z2 = mbbc2(qdfh(Trim(z2)), Val(sd))

zb1 = mcc2(mpc3(Trim(a3), Trim(z2)), 2 & String(sd, "0"), Val(sd))
zb2 = mcc2(mpc2(Trim(a3), Trim(z2)), 2 & String(sd, "0"), Val(sd))
zc1 = mpc3(Trim(Y1), mcc2(mpc2(mbc2(Trim(a3), Trim(Y1), Val(sd)), Trim(c3)), Trim(z2), Val(sd)))
zc2 = mpc2(Trim(Y1), mcc2(mpc2(mbc2(Trim(a3), Trim(Y1), Val(sd)), Trim(c3)), Trim(z2), Val(sd)))
y3 = jie2cifc(Trim(za), Trim(zb1), Trim(zc1), Val(sd))
y4 = jie2cifc(Trim(za), Trim(zb2), Trim(zc2), Val(sd))
Text9 = y3
Text10 = y4
Label1.Caption = Val(Label1.Caption) + 1
Text14.Text = Text14.Text & "  输入" & Label1.Caption & ":  " & "a=" & k & ",  b=" & ja & ",  c=" & jb & ",  d=" & jc _
  & ",e=" & jd & ";  输出结果" & Label1.Caption & ":    " & "x1,2=" & Text9.Text & ",  x3,4=" & Text10.Text
End Sub

修改了一下如下代码(两个可调用程序,这是修改后的正确结果):

Private Function mbbc3(sa As String, sd As String) As String 'kai lifang jingdu daifh
Dim ja
If Val(Len(sa)) = 1 And Trim(sa) = 0 Then
   mbbc3 = 0
   Else
   
fh = fhys(sa)
ja = MBBC1(qdfh(sa) & String(Val(sd) * 2, "0"))
If InStr(ja, "/") = 0 And Val(fh) > 0 Then
mbbc3 = ja
Else
If InStr(ja, "/") = 0 And Val(fh) < 0 Then
mbbc3 = "-" & ja
Else
If Val(fh) > 0 Then
mbbc3 = Left(ja, InStr(ja, "/") - 1)
Else
mbbc3 = "-" & Left(ja, InStr(ja, "/") - 1)

End If
End If
End If
End If


End Function

Private Function mbbc2(sa As String, sd As String) As String 'kai pingfang jingdu
Dim ja
If Val(Len(sa)) = 1 And Trim(sa) = 0 Then
mbbc2 = 0
Else

ja = MBBC(Trim(sa) & String(Val(sd), "0"))

If InStr(ja, "/") = 0 Then
mbbc2 = ja
Else
mbbc2 = Left(ja, InStr(ja, "/") - 1)
End If
End If

End Function
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-1 03:35 | 显示全部楼层
本帖最后由 ysr 于 2025-11-22 01:50 编辑

输入1:  a=1,  b=2,  c=3,  d=4,e=3;  输出结果1:    x1,2=-0.9215541049+ -1.3462240419,  x3,4=-0.0784458950+ -1.4986900916i  输入2:  a=1,  b=2,  c=3,  d=4,e=7;  输出结果2:    x1,2=-0.7206148692+ -1.4503915063,  x3,4=-0.2793851308+ -1.8197829537i  输入3:  a=1,  b=2,  c=3,  d=4,e=9;  输出结果3:    x1,2=-0.6876378626+ -1.5477748615,  x3,4=-0.3123621373+ -1.9194684725i

我的程序给出的3个方程的解,还不一定对!!哎!!!

又修改了一下程序如下就是修改后的结果:
输入1:  a=1,  b=2,  c=3,  d=4,e=3;  输出结果1:    x1,2=-1.1101820572+ -0.8493442163i,  x3,4=0.1101820572+ -1.2342036656i  输入2:  a=1,  b=2,  c=3,  d=4,e=7;  输出结果2:    x1,2=-1.4140830923+ -1.0190935558i,  x3,4=0.4140830923+ -1.4603232943i  输入3:  a=1,  b=2,  c=3,  d=4,e=9;  输出结果3:    x1,2=-1.5109697214+ -1.1302588746i,  x3,4=0.5109697214+ -1.5055345999i
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-18 22:17 | 显示全部楼层
本帖最后由 ysr 于 2025-11-22 00:54 编辑

又修改了一下程序,如下为修改后的计算结果:
输入1:  a=1,  b=2,  c=3,  d=4,e=5;  输出结果1:    x1,2=-1.2878154796+ -0.8578967583i,  x3,4=0.2878154796+ -1.4160930802i  输入2:  a=1,  b=2,  c=3,  d=4,e=3;  输出结果2:    x1,2=-1.1101820572+ -0.5503585864i,  x3,4=0.1101820572+ -1.3934667963i

又修改了一下,结果:
输入1:  a=1,  b=2,  c=3,  d=4,e=5;  输出结果1:    x1,2=-1.2878154796+ -0.8578967583i,  x3,4=0.2878154796+ -1.4160930802i  输入2:  a=1,  b=2,  c=3,  d=4,e=3;  输出结果2:    x1,2=-1.1101820572+ -0.5503585864i,  x3,4=0.1101820572+ -1.3934667963i
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-18 22:18 | 显示全部楼层
本帖最后由 ysr 于 2025-11-22 00:57 编辑

输入1:  a=1,  b=11,  c=46,  d=96,e=120;  输出结果1:    x1,2=-4.4147314911+ -1.2945834215i,  x3,4=-1.0852685089+ -2.1193668017i

又修改了一下,结果:
输入1:  a=1,  b=11,  c=46,  d=96,e=120;  输出结果1:    x1,2=-4.4147314911+ -1.2945834215i,  x3,4=-1.0852685089+ -2.1193668017i
回复 支持 反对

使用道具 举报

 楼主| 发表于 2026-2-26 19:31 | 显示全部楼层
本帖最后由 ysr 于 2026-2-28 08:38 编辑

输入1:  a=1,  b=2,  c=-3,  d=4,e=5;  输出结果1:    x1,2=-1.9556023509+ -1.2268754722,  x3,4=0.9556023509+ -1.1148003552i
'解四次方程的代码如下(这个运行结果是对的):
Private Sub Command1_Click()
Dim a, b, c, d, f, g
Dim ja, jb, jc
k = DeleteSpace(Text1.Text)
ja = DeleteSpace(Text2.Text)
jb = DeleteSpace(Text3.Text)
jc = DeleteSpace(Text4.Text)
jd = DeleteSpace(Text5.Text)
sd1 = DeleteSpace(Text15.Text)
If Abs(Val(sd1)) <= 10 Then
sd = 10 + 2
Else
If Len(sd1) > 3 And Abs(Val(sd1)) > 300 Then
sd = 300 + 2
Else
sd = Int(Abs(Val(sd1))) + 2
End If
End If

a2 = zhengliys2(Trim(ja), Val(sd))
b2 = zhengliys2(Trim(jb), Val(sd))

C2 = zhengliys2(Trim(jc), Val(sd))
D2 = zhengliys2(Trim(jd), Val(sd))
k2 = zhengliys2(Trim(k), Val(sd))
If MBJC(Trim(k2), 0) = 0 Then
Text4.Text = "a 不能为 0"
   Text5.Text = "a 为 0可能已不是1元4次方程"
  Else
   
a3 = mcc2(Trim(a2), Trim(k2), Val(sd))
b3 = mcc2(Trim(b2), Trim(k2), Val(sd))
c3 = mcc2(Trim(C2), Trim(k2), Val(sd))
d3 = mcc2(Trim(D2), Trim(k2), Val(sd))
jk = 8 & String(sd, "0")
ja1 = mbc2("-4" & String(sd, "0"), Trim(b3), Val(sd))
jb1 = mpc2(mbc2(2 & String(sd, "0"), mbc2(Trim(a3), Trim(c3), Val(sd)), Val(sd)), mbc2(8 & String(sd, "0"), Trim(d3), Val(sd)))
jc1 = mpc2(mbc2(Trim(d3), mpc2(mbc2(4 & String(sd, "0"), Trim(b3), Val(sd)), mbc2(Trim(a3), Trim(a3), Val(sd))), Val(sd)), mbc2(Trim(c3), Trim(c3), Val(sd)))
Y = jie3cifc(Trim(ja1), Trim(jb1), Trim(jc1), Trim(jk), Val(sd))
Y1 = zhengliys2(Trim(Y), Val(sd))
End If
Text6 = zhengliys2(Trim(Y), Val(sd))
Text8 = Y
za = 1 & String(sd, "0")
z2 = mpc2(mpc3(mbc2(8 & String(sd, "0"), Trim(Y1), Val(sd)), mbc2(Trim(a3), Trim(a3), Val(sd))), mbc2(4 & String(sd, "0"), Trim(b3), Val(sd)))
z2 = mbbc2(qdfh(Trim(z2)), Val(sd))

zb1 = mcc2(mpc3(Trim(a3), Trim(z2)), 2 & String(sd, "0"), Val(sd))
zb2 = mcc2(mpc2(Trim(a3), Trim(z2)), 2 & String(sd, "0"), Val(sd))
zc1 = mpc3(Trim(Y1), mcc2(mpc2(mbc2(Trim(a3), Trim(Y1), Val(sd)), Trim(c3)), Trim(z2), Val(sd)))
zc2 = mpc2(Trim(Y1), mcc2(mpc2(mbc2(Trim(a3), Trim(Y1), Val(sd)), Trim(c3)), Trim(z2), Val(sd)))
y3 = jie2cifc(Trim(za), Trim(zb1), Trim(zc1), Val(sd))
y4 = jie2cifc(Trim(za), Trim(zb2), Trim(zc2), Val(sd))
Text9 = y3
Text10 = y4

Text15.Text = Text15.Text & "  输入" & ":  " & "a=" & k & ",  b=" & ja & ",  c=" & jb & ",  d=" & jc _
  & ",e=" & jd & ";  输出结果" & ":    " & "x1,2=" & Text9.Text & ",  x3,4=" & Text10.Text
End Sub
回复 支持 反对

使用道具 举报

 楼主| 发表于 2026-2-28 16:47 | 显示全部楼层
本帖最后由 ysr 于 2026-2-28 17:02 编辑

这个结果也对:输入:  a=1,  b=2,  c=-3,  d=4,e=5;  输出结果:    x1,2=-0.7287268787, -3.1824778231,  x3,4=0.9556023509+ -1.1148003552i

因为其中的解2次方程的可调用程序不同,代码如下:
Public Function jie2cifc(a2 As String, b2 As String, c2 As String, sd As String) As String '2次方程
Dim d, y
b3 = b2
b2 = qdfh(b2)
d = mbc2(Trim(b2), Trim(b2), Val(sd))
D1 = mpc2(Trim(d), mbc2(4 & String(sd, "0"), mbc2(Trim(a2), Trim(c2), Val(sd)), Val(sd)))
d3 = qdfh(Trim(D1))
D2 = mbbc2(Trim(d3), Val(sd))
y = mcc2(Trim(b2), mbc2(2 & String(sd, "0"), Trim(a2), Val(sd)), Val(sd))
sf = fhys(Trim(b3))
sf = Val(-1 * sf)
y = tjfh(qdfh(Trim(y)), Val(sf))
If mbjc2(Trim(D1), 0) >= 0 Then
d3 = mcc2(Trim(D2), mbc2(2 & String(sd, "0"), Trim(a2), Val(sd)), Val(sd))
Y1 = mpc3(Trim(y), Trim(d3))
Y2 = mpc2(Trim(y), Trim(d3))
y = shuchujg(Trim(Y1), Val(sd))
d3 = shuchujg(Trim(Y2), Val(sd))
jie2cifc = y & ", " & d3
Else
y = shuchujg(Trim(y), Val(sd))
d3 = mcc2(Trim(D2), mbc2(2 & String(sd, "0"), Trim(a2), Val(sd)), Val(sd))
d3 = shuchujg(Trim(d3), Val(sd)) & "i"
jie2cifc = y & "+ -" & d3
End If


End Function

Private Function shuchujg(sa As String, sd As String) As String
'shuchu jieguo
If Len(qqdl(sa)) = 1 And Trim(qqdl(sa)) = 0 Then
shuchujg = 0
Else
sa1 = MPC1(qdfh(Trim(sa)), 49)
fsa = fhys(Trim(sa))
If Len(sa1) = Val(sd) Then
a1 = 0
jb1 = sa1
Else
If Len(sa1) < Val(sd) Then
a1 = 0
jb1 = String(Val(sd) - Len(sa1), "0") & sa1
Else
a1 = Left(sa1, Len(sa1) - Val(sd))
jb1 = Right(sa1, Val(sd))
End If
End If
jb2 = Left(jb1, Val(sd) - 2)
If MBJC(qqdl(Trim(jb2)), 0) = 0 Then
  shuchujg = tjfh(Trim(a1), Val(fsa))
  Else
  shuchujg = tjfh(Trim(a1), Val(fsa)) & "." & jb2
  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


Private Function zhengchuqy(sa As String) As String
If InStr(sa, "/") = 0 Then
zhengchuqy = sa
Else
zhengchuqy = Left(sa, InStr(sa, "/") - 1)
End If


End Function

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
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-23 13:18 , Processed in 0.119959 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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