lanfengc
发表于 2010-2-27 16:05:41
回复 30# afan
但是会出现漏算的问题。
afan
发表于 2010-2-27 16:06:47
回复 31# lanfengc
举例说明,漏了哪个
netegg
发表于 2010-2-27 17:20:11
不是最高效的,但一定是最精简的...180ms左右
**** 本内容被作者隐藏 ****
gapkiller 发表于 2010-2-27 14:10 http://www.autoitx.com/images/common/back.gif
StringLen这个函数不让用
gapkiller
发表于 2010-2-27 18:49:17
StringLen这个函数不让用
netegg 发表于 2010-2-27 17:20 http://www.autoitx.com/images/common/back.gif
我又没说要去拓展...
lin0308
发表于 2010-2-27 19:13:23
看看什么号东西
pusofalse
发表于 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)
laojikelly
发表于 2010-2-28 11:57:07
what's 勾古数
lanfengc
发表于 2010-2-28 12:54:40
本帖最后由 lanfengc 于 2010-2-28 12:56 编辑
回复 37# pusofalse
经典!表驱动法?
个人 理解
将数组中下标为 1到 100的平方的每个元素赋值成1到 100.
然后,判断$i ^ 2 + $j ^ 2 该元素是否为空。 如果不为空,则输出到结果中。如果为空,继续下次循环。
利用的是查表的方法。 不知道对不?
gapkiller
发表于 2010-2-28 13:24:37
感谢诸位参与。这两天在忙一些无聊的事情,没能及时回复诸位,抱歉至极。
诸位的代码都十分精彩,学习了~! ...
pusofalse 发表于 2010-2-28 08:12 http://www.autoitx.com/images/common/back.gif
其实最外面一层循环从1到70就够了
如果直角三角形的斜边<=100, 那么短的直角边一定<=70
因为 (71^2+71^2)^0.5>100
auto
发表于 2010-2-28 17:22:48
路过,看看各位的思路
haixian000
发表于 2010-2-28 19:01:13
学习学习再学习 脑子早就锈逗了 只有旁观的份
Repece
发表于 2010-2-28 19:27:56
看看大家的算法。
myrsb
发表于 2010-2-28 20:01:21
初学者,学习一下
yangdai
发表于 2010-2-28 21:21:57
本帖最后由 yangdai 于 2010-2-28 22:50 编辑
dim$StartTime=TimerInit()
$s=""
FOR $i=1to66
$ii=$i*$i
FOR $j=$ito100
$q=($ii+$j*$j)^.5
if $q>100 then
exitloop
endif
FOR $k=$jto$i+$j-1
if$k=$qthen
$s &= $i & " " &$j & " " & $k & @CRLF
endif
Next
Next
Next
MsgBox(0,"已用:"&TimerDiff($StartTime),$s)
haorui658
发表于 2010-2-28 21:38:03
回复 1# pusofalse
学习一下各位的代码