下面这个例子既用了乘法又用了除法
应该是符合“分别用正算和反算法”的要求吧:)
楼上的算法难以理解
最多30次的循环
还用二分搜索之类的玩意嘛?
检测溢出可以用大小比较
但是这个不可靠
最可靠的还是先乘再除看是否还是原数
- @echo off&setlocal
- :loop2
- set /p num=请输入大于1的正整数:
- echo.
- set count=0
- set temp=1
- :loop
- set /a count+=1
- set /a temp1=temp
- rem 为了避免set/a的对超大的溢出数自动纠错,直接引用原数,并屏蔽可能的错误输出
- set /a temp*=%num% 2>nul
- set /a temp2=temp/%num% 2>nul
- if "%temp1%"=="%temp2%" goto :loop
- set /a count-=1
- echo %num%的%count%次方接近于cmd的最大值。
- echo.
- goto :loop2
复制代码
|