kn007 发表于 2010-2-27 14:26:00

不是最高效的,但一定是最精简的...180ms左右
**** 本内容被作者隐藏 ****
gapkiller 发表于 2010-2-27 14:10 http://www.autoitx.com/images/common/back.gif


给你补句话:也一定是集大家之智慧,修改而成的!

gapkiller 发表于 2010-2-27 14:28:11

给你补句话:也一定是集大家之智慧,修改而成的!
kn007 发表于 2010-2-27 14:26 http://www.autoitx.com/images/common/back.gif

....
我鄙视你

clshuai 发表于 2010-2-27 14:37:14

呵呵。。。大家都都努力啊,我也来看看

itljl 发表于 2010-2-27 14:41:14

禁止调用其它函数。。。

catcher 发表于 2010-2-27 14:43:27

看牛人怎么写代码的

lanfengc 发表于 2010-2-27 15:02:14

你的结果不是很全啊。
[]
=
3 4 5
4 3 5
5 12 13
6 8 10
7 24 25
8 6 10
8 15 17
9 12 15
9 40 41
10 24 26
11 60 61
12 5 13
12 9 15
12 16 20
12 35 37
13 84 85
14 48 50
15 8 17
15 20 25
15 36 39
16 12 20
16 30 34
16 63 65
18 24 30
18 80 82
20 15 25
20 21 29
20 48 52
21 20 29
21 28 35
21 72 75
24 7 25
24 10 26
24 18 30
24 32 40
24 45 51
24 70 74
25 60 65
27 36 45
28 21 35
28 45 53
28 96 100
30 16 34
30 40 50
30 72 78
32 24 40
32 60 68
33 44 55
33 56 65
35 12 37
35 84 91
36 15 39
36 27 45
36 48 60
36 77 85
39 52 65
39 80 89
40 9 41
40 30 50
40 42 58
40 75 85
42 40 58
42 56 70
44 33 55
45 24 51
45 28 53
45 60 75
48 14 50
48 20 52
48 36 60
48 55 73
48 64 80
51 68 85
52 39 65
54 72 90
55 48 73
56 33 65
56 42 70
57 76 95
60 11 61
60 25 65
60 32 68
60 45 75
60 63 87
60 80 100
63 16 65
63 60 87
64 48 80
65 72 97
68 51 85
70 24 74
72 21 75
72 30 78
72 54 90
72 65 97
75 40 85
76 57 95
77 36 85
80 18 82
80 39 89
80 60 100
84 13 85
84 35 91
96 28 100
我得到的结果。

代码:
$StartTime=TimerInit()
$FirstNum=0
$SecondNum=0
$ThirdNum=0
Global $OutPutString=""

For $FirstNum=1 To 100 Step 1
        For $SecondNum=1 To 100 Step 1
                For $ThirdNum=1 To 100 Step 1
                        If $FirstNum*$FirstNum+$SecondNum*$SecondNum=$ThirdNum*$ThirdNum Then
                                $OutPutString=$OutPutString&@CRLF&$FirstNum&" "&$SecondNum&" "&$ThirdNum
                                ContinueLoop
                        EndIf
                Next
        Next
Next
MsgBox(0,"已用:"&TimerDiff($StartTime),$OutPutString)

afan 发表于 2010-2-27 15:04:40

你的结果不是很全啊。
[]
=
3 4 5
4 3 5
5 12 13
6 8 10
7 24 25
8 6 10
8 15 17
9 12 15
9 40...
lanfengc 发表于 2010-2-27 15:02 http://www.autoitx.com/images/common/back.gif

3 4 5
4 3 5
这就算重复了……

netegg 发表于 2010-2-27 15:19:53

而且前面已经说过了,三重循环在数少的情况下看不出来快慢,你试试1000以内的

netegg 发表于 2010-2-27 15:23:27

不是最高效的,但一定是最精简的...180ms左右
**** 本内容被作者隐藏 ****
gapkiller 发表于 2010-2-27 14:10 http://www.autoitx.com/images/common/back.gif

函数用多了

lanfengc 发表于 2010-2-27 15:26:50

1000以内的,以上的所有代码都会造成卡死现象。

afan 发表于 2010-2-27 15:36:29

本帖最后由 afan 于 2010-2-27 15:45 编辑

1000以内的,以上的所有代码都会造成卡死现象。
lanfengc 发表于 2010-2-27 15:26 http://www.autoitx.com/images/common/back.gif


    看来你的机器性能需要改善了
我测试我的1 (2#)、3 (13#)代码,1000内,返回881条,耗时14xx ms、15xx ms。
至于我的2 (7#)代码,由于嵌套3重循环,效率就低了,1000内,返回881条,耗时119xxx ms。

netegg 发表于 2010-2-27 15:36:37

1000以内的,以上的所有代码都会造成卡死现象。
lanfengc 发表于 2010-2-27 15:26 http://www.autoitx.com/images/common/back.gif

所以不对呀

gapkiller 发表于 2010-2-27 15:38:32

函数用多了
netegg 发表于 2010-2-27 15:23 http://www.autoitx.com/images/common/back.gif


    水平有限哦

lanfengc 发表于 2010-2-27 16:00:32

回复 2# afan

这个代码的效率够强悍。 可是为什么你第二个数不能小于第一个呢?

afan 发表于 2010-2-27 16:03:42

回复 29# lanfengc


    就是为了避免重复~ 如上面说的 3 4 5 与 4 3 5
页: 1 [2] 3 4 5
查看完整版本: 练习004 - 计算100以内的勾股数