中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [借鉴,改进]输出100以内的【互质的】勾股数
作者:
标题: [借鉴,改进]输出100以内的【互质的】勾股数 上一主题 | 下一主题
plp626
银牌会员

钻石会员


积分 2278
发帖 1020
注册 2007-11-19
状态 离线
『楼 主』:  [借鉴,改进]输出100以内的【互质的】勾股数



  Quote:
@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 ]

2008-1-15 12:29
查看资料  发短消息 网志   编辑帖子  回复  引用回复
plp626
银牌会员

钻石会员


积分 2278
发帖 1020
注册 2007-11-19
状态 离线
『第 2 楼』:  

这个帖子沉了,我删了

2008-1-15 16:11
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: