中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-24 07:09
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已解决]求最大公约数,得不到要的结果 查看 1,169 回复 4
楼 主 [已解决]求最大公约数,得不到要的结果 发表于 2007-01-13 00:58 ·  中国 湖南 永州 电信
初级用户
积分 56
发帖 20
注册 2006-04-23 12:47
20年会员
UID 54313
状态 离线
请教:
代码如下,不知错在何处,得不到要的结果
@echo off
rem 求36与另一个正整数(少于36)的最大公约数
:start
set y=36
set /p x= 输入小于36的正整数:
:divisor
set /a y=%y%%%%x%
if %y%==0 set mcdivisor=%x% && goto :display
set x=%x%%%%y%
if %x%==0 set mcdivisor=%y% && goto :display
goto :divisor
:display
echo mcdivisor:%mcdivisor%
pause
goto :start

[ Last edited by donpps on 2007-1-13 at 02:13 AM ]
2 发表于 2007-01-13 01:30 ·  中国 广东 清远 联通
高级用户
★★
积分 846
发帖 247
注册 2006-10-27 12:03
19年会员
UID 68504
性别 男
来自 湖南==》广东
状态 离线
试试这个:

@echo off
echo.
echo 求两数的最大公约数
echo ================================
title 求两数的最大公约数
setlocal enabledelayedexpansion
set /p num1=请输入第一个数字:
set /p num2=请输入第二个数字:
echo --------------------------------
echo %num1%和%num2%最大公约数为:
:test
set /a temp=%num1% %% %num2%
if %temp% NEQ 0 (
set /a num1=!num2!
set /a num2=!temp!
goto :test)

echo %num2%
pause>nul


[ Last edited by youxi01 on 2007-1-13 at 02:27 AM ]
3 发表于 2007-01-13 01:33 ·  中国 广东 清远 联通
高级用户
★★
积分 846
发帖 247
注册 2006-10-27 12:03
19年会员
UID 68504
性别 男
来自 湖南==》广东
状态 离线
TO: 楼主,你的错误的地方是那个y应该要交换的,而你直接去定义了
“set /a y=%y%%%%x%”
4 发表于 2007-01-13 01:51 ·  中国 湖南 永州 电信
初级用户
积分 56
发帖 20
注册 2006-04-23 12:47
20年会员
UID 54313
状态 离线
谢谢指正,2楼的代码有点小小毛病
echo %num1%和%num2%最大公约数为:%num2%
其中%num1%和%num2%已经变化
5 发表于 2007-01-20 03:19 ·  中国 辽宁 本溪 联通
银牌会员
★★★
积分 1,212
发帖 464
注册 2006-12-13 21:11
19年会员
UID 73417
性别 男
状态 离线
VBS写一个,灌水~

a=inputbox("请输入两个数用空格分开:")
h=split(a," ")
min=h(0)
if h(0)>h(1) then min=h(1)
for i=1 to min
if h(0) mod i=0 and h(1) mod i=0 then s=i
next
msgbox h(0)&"和"&h(1)&"的最大公约数是:"&s
论坛跳转: