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

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

[复制链接]
发表于 2010-2-27 16:05:41 | 显示全部楼层
回复 30# afan

但是会出现漏算的问题。
发表于 2010-2-27 16:06:47 | 显示全部楼层
回复 31# lanfengc


    举例说明,漏了哪个
发表于 2010-2-27 17:20:11 | 显示全部楼层
不是最高效的,但一定是最精简的...180ms左右
**** 本内容被作者隐藏 ****
gapkiller 发表于 2010-2-27 14:10


StringLen这个函数不让用
发表于 2010-2-27 18:49:17 | 显示全部楼层
StringLen这个函数不让用
netegg 发表于 2010-2-27 17:20



    我又没说要去拓展...
发表于 2010-2-27 19:13:23 | 显示全部楼层
看看什么号东西
 楼主| 发表于 2010-2-28 08:12:27 | 显示全部楼层
感谢诸位参与。这两天在忙一些无聊的事情,没能及时回复诸位,抱歉至极。
诸位的代码都十分精彩,学习了~!
以下是我自己的解:
Local $vTimer = TimerInit(), $iX = 100, $aVal[($iX ^ 2) * 2 + 1], $sResult

For $i = 1 To $iX
        $aVal[$i ^ 2] = $i
Next

For $i = 1 To $iX
        For $j = $i + 1 To $iX
                If $aVal[$i ^ 2 + $j ^ 2] Then
                        $sResult &= $i & " " & $j & " " & $aVal[$i ^ 2 + $j ^ 2] & @CRLF
                EndIf
        Next
Next
Msgbox(0, TimerDiff($vTimer), $sResult)

评分

参与人数 1金钱 +100 收起 理由
afan + 100 学习强悍!

查看全部评分

发表于 2010-2-28 11:57:07 | 显示全部楼层
what's 勾古数
发表于 2010-2-28 12:54:40 | 显示全部楼层
本帖最后由 lanfengc 于 2010-2-28 12:56 编辑

回复 37# pusofalse


    经典!  表驱动法?

个人 理解
将数组中下标为 1到 100的平方的每个元素赋值成1到 100.
然后,判断$i ^ 2 + $j ^ 2 该元素是否为空。 如果不为空,则输出到结果中。如果为空,继续下次循环。

利用的是查表的方法。 不知道对不?
发表于 2010-2-28 13:24:37 | 显示全部楼层
感谢诸位参与。这两天在忙一些无聊的事情,没能及时回复诸位,抱歉至极。
诸位的代码都十分精彩,学习了~! ...
pusofalse 发表于 2010-2-28 08:12



其实最外面一层循环从1到70就够了
如果直角三角形的斜边<=100, 那么短的直角边一定<=70
因为 (71^2+71^2)^0.5>100

评分

参与人数 1金钱 +40 收起 理由
pusofalse + 40 高!

查看全部评分

发表于 2010-2-28 17:22:48 | 显示全部楼层
路过,看看各位的思路
发表于 2010-2-28 19:01:13 | 显示全部楼层
学习学习再学习 脑子早就锈逗了 只有旁观的份
发表于 2010-2-28 19:27:56 | 显示全部楼层
看看大家的算法。
发表于 2010-2-28 20:01:21 | 显示全部楼层
初学者,学习一下
发表于 2010-2-28 21:21:57 | 显示全部楼层
本帖最后由 yangdai 于 2010-2-28 22:50 编辑

dim  $StartTime=TimerInit()
$s=""
FOR $i=1  to  66
  $ii=$i*$i
  FOR $j=$i  to  100
      $q=($ii+$j*$j)^.5
      if $q>100    then
         exitloop
      endif
     FOR $k=$j  to  $i+$j-1
         if  $k=$q  then
             $s &= $i & " " &  $j & " " & $k & @CRLF
         endif
     Next
  Next
Next
MsgBox(0,"已用:"&TimerDiff($StartTime),$s)

评分

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

查看全部评分

发表于 2010-2-28 21:38:03 | 显示全部楼层
回复 1# pusofalse


    学习一下各位的代码
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-3-29 09:55 , Processed in 0.085723 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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