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