找回密码
 加入
搜索
楼主: pusofalse

[效率算法] 练习004 - 计算100以内的勾股数

[复制链接]
发表于 2010-2-27 14:26:00 | 显示全部楼层
不是最高效的,但一定是最精简的...180ms左右
**** 本内容被作者隐藏 ****
gapkiller 发表于 2010-2-27 14:10



给你补句话:也一定是集大家之智慧,修改而成的!
发表于 2010-2-27 14:28:11 | 显示全部楼层
给你补句话:也一定是集大家之智慧,修改而成的!
kn007 发表于 2010-2-27 14:26


....
我鄙视你
发表于 2010-2-27 14:37:14 | 显示全部楼层
呵呵。。。大家都都努力啊,我也来看看
发表于 2010-2-27 14:41:14 | 显示全部楼层
禁止调用其它函数。。。
发表于 2010-2-27 14:43:27 | 显示全部楼层
看牛人怎么写代码的
发表于 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)

评分

参与人数 1金钱 +20 收起 理由
pusofalse + 20 学习了。

查看全部评分

发表于 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


3 4 5
4 3 5
这就算重复了……
发表于 2010-2-27 15:19:53 | 显示全部楼层
而且前面已经说过了,三重循环在数少的情况下看不出来快慢,你试试1000以内的
发表于 2010-2-27 15:23:27 | 显示全部楼层
不是最高效的,但一定是最精简的...180ms左右
**** 本内容被作者隐藏 ****
gapkiller 发表于 2010-2-27 14:10


函数用多了
发表于 2010-2-27 15:26:50 | 显示全部楼层
1000以内的,以上的所有代码都会造成卡死现象。
发表于 2010-2-27 15:36:29 | 显示全部楼层
本帖最后由 afan 于 2010-2-27 15:45 编辑
1000以内的,以上的所有代码都会造成卡死现象。
lanfengc 发表于 2010-2-27 15:26



    看来你的机器性能需要改善了
我测试我的1 (2#)、3 (13#)代码,1000内,返回881条,耗时14xx ms、15xx ms。
至于我的2 (7#)代码,由于嵌套3重循环,效率就低了,1000内,返回881条,耗时119xxx ms。
发表于 2010-2-27 15:36:37 | 显示全部楼层
1000以内的,以上的所有代码都会造成卡死现象。
lanfengc 发表于 2010-2-27 15:26


所以不对呀
发表于 2010-2-27 15:38:32 | 显示全部楼层
函数用多了
netegg 发表于 2010-2-27 15:23



    水平有限哦
发表于 2010-2-27 16:00:32 | 显示全部楼层
回复 2# afan

这个代码的效率够强悍。 可是为什么你第二个数不能小于第一个呢?
发表于 2010-2-27 16:03:42 | 显示全部楼层
回复 29# lanfengc


    就是为了避免重复~ 如上面说的 3 4 5 与 4 3 5
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-3-28 20:27 , Processed in 0.076649 second(s), 18 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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