@echo off 
::此代码将论坛里输出勾股数与求最大公约数综合得来,非原创.
echo. 
echo 100以内的勾股数如下: 
setlocal enabledelayedexpansion 
for /l %%i in (1,1,100) do ( 
    for /l %%j in (%%i,1,100) do ( 
        for /l %%k in (%%j,1,100) do ( 
            set /a a=%%i*%%i,b=%%j*%%j,c=%%k*%%k 
            set /a sum=!a!+!b! 
            set /a v1=%%i,v2=%%j,v3=%%k 
            if !sum! equ !c! call :prime  
        ) 
    ) 
) 
:prime 
set /a a=!v1!,b=!v2! 
if %a% lss %b% goto restart 
:loop 
set/a num2=%a%%%b% 
if %num2% gtr 0 set/a a=%b%&set/a b=%num2%&goto loop 
goto show 
:restart 
set/a num1=%a% 
set/a a=%b% 
set/a b=%num1% 
goto :loop 
:show 
if %b%==1 echo !v1! !V2! !V3! 
goto :eof 
不过速度还是慢,又没快速算法,大家各抒己见.
 Last edited by plp626 on 2008-1-15 at 01:04 PM ]