| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 4998 人关注过本帖
标题:这个程序如何提高速度?算到10万内居然就需要几个小时呢
只看楼主 加入收藏
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:825
专家分:77
注 册:2020-2-10
收藏
得分:0 
y = sqr( x * x - 125 + 29 )
咋是无效的调用过程或参数?
明白了加个绝对值!!

[此贴子已经被作者于2025-3-13 07:55编辑过]

2025-03-13 07:53
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:825
专家分:77
注 册:2020-2-10
收藏
得分:0 
Private Sub Command1_Click()
'可以,10万内不到1分钟
Dim a, b, s As Long
Dim c As Double
Dim x As Double
Dim y, jj

a = Val(Text1)
For x = 1 To a
y = Abs(x * x - 139) / 13
y = y ^ 0.5
If Int(y) = y Then       '得到是一个整数
  If y < a Then   '在输入范围内
    '得到一个解
    s = s + 1
    js = js & "x=" & x & "  y=" & y & vbCrLf
  End If
End If
Next x

If s > 0 Then
Text2 = js
Else
Text2 = "  wu  jie"
End If


End Sub

Private Sub Command2_Click()

Text1 = ""
Text2 = ""

End Sub
2025-03-14 06:30
cwa9958
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:76
帖 子:280
专家分:1367
注 册:2006-6-25
收藏
得分:0 
y = y ^ 0.5改为 y=sqr(y)
试试下面的代码:
程序代码:
Private Sub Command1_Click()
'可以,10万内不到1分钟
Dim a As Long, b As Long, s As Long
Dim c As Double
Dim x As Double
Dim y As Double, js As String

Text2 = ""
a = Val(Text1)
t = Timer
DoEvents

For x = 1 To a
    y = Abs(x * x - 139) / 13
    y = Sqr(y)
    If Int(y) = y Then       '得到是一个整数
      If y < a Then   '在输入范围内
        '得到一个解
        s = s + 1
        js = js & "x=" & x & "  y=" & y & vbCrLf
      End If
    End If
Next x

If s > 0 Then
    Text2 = js & vbCrLf & Timer - t
  Else
    Text2 = "  wu  jie"
End If


End Sub
2025-03-17 08:44
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:825
专家分:77
注 册:2020-2-10
收藏
得分:0 
x=7875  y=314
x=9851725  y=392814
x=438642128  y=17489807
x=778845506  y=31054604
x=892246632  y=35576203

50.96484
2025-03-17 09:21
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:825
专家分:77
注 册:2020-2-10
收藏
得分:0 
回复 13楼 cwa9958
非常感谢!已经结帖,记分用完了,没法给你得分了,抱歉!
感觉快了不少,原来的程序没有计时程序,修改后的程序代码如下:
Private Sub Command1_Click()
'可以,10万内不到1分钟
Dim a As Long, b As Long, s As Long
Dim c As Double
Dim x As Double
Dim y As Double, js As String

Text2 = ""
a = Val(Text1)
t = Timer
DoEvents

For x = 1 To a
    y = Abs(x * x + 1259) / 629
    y = Sqr(y)
    If Int(y) = y Then       '得到是一个整数
      If y < a Then   '在输入范围内
        '得到一个解
        s = s + 1
        js = js & "x=" & x & "  y=" & y & vbCrLf
      End If
    End If
Next x

If s > 0 Then
    Text2 = js & vbCrLf & Timer - t
  Else
    Text2 = "  wu  jie"
End If


End Sub

Private Sub Command2_Click()

Text1 = ""
Text2 = ""

End Sub
2025-03-17 09:25
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:825
专家分:77
注 册:2020-2-10
收藏
得分:0 
回复 15楼 ysr2857
只能算10000 0000 内的数,超过这个计算结果就可能不对了。
2025-03-19 21:32
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4952
专家分:30104
注 册:2008-10-15
收藏
得分:0 
因了超过 long 范围
超范围的整数计算,需要上 大数运算 ,
这个不要用VB6 ,因为没有现成的大数运算库。


授人于鱼,不如授人于渔
早已停用QQ了
2025-03-20 15:50
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:825
专家分:77
注 册:2020-2-10
收藏
得分:0 
回复 17楼 风吹过b
谢谢指导!我是用自己编辑的程序,速度太慢!
2025-03-21 07:53
ysr2857
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:34
帖 子:825
专家分:77
注 册:2020-2-10
收藏
得分:0 
vb6.0咋无法设定Decimal类型?网上查询vb语言有这种数据类型呢
2025-03-21 17:52
快速回复:这个程序如何提高速度?算到10万内居然就需要几个小时呢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018728 second(s), 10 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved