注册 登录
编程论坛 VB6论坛

请求各位老师修改程序

ysr2857 发布于 2020-06-30 12:02, 1833 次点击
如下程序当输入10^15以上的数时,输出结果为科学记数法,要求改为输出整数部分,且不用科学记数法的整数。

Private Sub Command1_Click()
Dim a, b, c
a = Trim(Text1)

b = Sqr(a)
c = a / Log(a)
If a > 10 ^ 25 Then
a1 = Log(a) / Log(10)
b3 = (1.74136140824861 ^ ((1.06415 * Exp(-0.00175 * (a1 - 0.65 * (a1 - 21)))) ^ a1)) ^ a1
c = (a + (b3 + 4) * b) / Log(a)
ElseIf a > 10000000 Then
a1 = Log(a) / Log(10)
b2 = Exp(1.033 * a1)
b1 = 0.159 * b2
b4 = (1.74136140824861 ^ (1.8 * a1)) / 4.9
b5 = (b1 + b4) / 2
c = (a + (b5 + 4) * b) / Log(a)
ElseIf a >= 10000 Then
a1 = Log(a) / Log(10)
b3 = (56 * a1 ^ 3 - 741 * a1 ^ 2 + 3367 * a1 - 5142) / 6
c = (a + (b3 + 4) * b) / Log(a)
ElseIf a >= 1000 Then
c = (a + 4 * b) / Log(a)
ElseIf a >= 500 Then
c = (a + 2 * b) / Log(a)
ElseIf a >= 100 Then
c = (a + b) / Log(a)
Else
c = c
End If
d = a / c
d1 = a - Int(d)
c1 = a & "内的素数个数下限为 " & Int(c)
Text2 = Text2 & c1 & vbCrLf
Text3 = d1
End Sub

Private Sub Command2_Click()
Text1 = ""
Text2 = ""
Text3 = ""
End Sub
3 回复
#2
风吹过b2020-06-30 16:12
没去跑你程序,如果仅仅是最后的显示结果不要使用科学计数法显示的话,你参考下面的三行代码吧

Dim i As Double
i = 1.25498745974E+16
Text1.Text = Format(i, "#")          'format 返回是字符串

#3
ysr28572020-07-01 22:42
还是不行?
输入100000000000000000内(即10^17内)的素数个数下限为 2.60123767067574E+15,
而1000000000000000内(即10^15内)的素数个数下限为 29641490792455,
10000000000000000内(即10^16内)的素数个数下限为 277084362658476。
#4
ysr28572020-07-01 22:57
这回行了,只是末尾都是0,可能精确度达不到?如下为程序结果和代码:
输入10000000000000000000000000内(即10^25内)的素数个数下限为 174823176693378000000000,
代码:
Private Sub Command1_Click()
Dim a, b
Dim c As Double
a = Trim(Text1)
b = Sqr(a)
c = a / Log(a)
If a > 10000000 Then
a1 = Log(a) / Log(10)
b2 = Exp(1.033 * a1)
b1 = 0.159 * b2
b4 = (1.74136140824861 ^ (1.8 * a1)) / 4.9
b5 = (b1 + b4) / 2
c = (a + (b5 + 4) * b) / Log(a)
ElseIf a >= 10000 Then
a1 = Log(a) / Log(10)
b3 = (56 * a1 ^ 3 - 741 * a1 ^ 2 + 3367 * a1 - 5142) / 6
c = (a + (b3 + 4) * b) / Log(a)
ElseIf a >= 1000 Then
c = (a + 4 * b) / Log(a)
ElseIf a >= 500 Then
c = (a + 2 * b) / Log(a)
ElseIf a >= 100 Then
c = (a + b) / Log(a)
Else
c = c
End If
d = a / c
d1 = a - Int(d)
c1 = a & "内的素数个数下限为 " & Format(c, "#")
Text2 = c1
Text3 = d1
End Sub

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



谢谢老师!结帖,给你打赏!


[此贴子已经被作者于2020-7-1 23:02编辑过]

1