返回列表 发帖
本帖最后由 linqing8 于 2011-4-27 13:01 编辑

我的杨辉三角,刚费老劲做出来,还未精简:
@echo off
del num.txt
setlocal ENABLEDELAYEDEXPANSION
set /p n=请输入层数,不要超过30.
for /l %%i in (1,1,%n%) do (
  set ln=%%i
  set a1=1
  set a!ln!=1
  set num=1
  if %%i geq 3 (
  set /a r1=2
  set /a r2=!ln!-1
for /l %%j in (!r1!,1,!r2!) do (
set col=%%j
set /a r3=%%j-1  
set /a r4=!ln!-2  
call :aaa
)
   )
if !ln! geq 2 for /l %%m in (2,1,!ln!)   do (set num=!num! !a%%m!)
echo !num! >> num.txt
  )
start num.txt
goto :eof
:aaa
for /f "skip=%r4% tokens=%r3%,%col%" %%k in (num.txt) do set /a a%col%=%%l+%%k COPY

TOP

本帖最后由 linqing8 于 2011-4-28 09:26 编辑

正整数质数因子分解,经过优化,对大数字分解速度较快,效率比此贴前两个高。最大计算能力为32位二进制。如分解1999999999=31*64516129本人机子上不到4秒。
@echo off
setlocal enabledelayedexpansion
:begin
set /p num=请输入一个正整数:
set /a n=0,num0=%num%
:cccc
set loop=10000
if %num%  GTR 10000 set /a loop=%num%/100
if %num%  GTR 1000000 set /a loop=%num%/1000
if %num%  GTR 100000000 set /a loop=%num%/10000
if %num%  GTR 10000000000 set /a loop=%num%/100000
if !num!  gtr 1 (
    for /l %%i in (2,1,%num%) do (
        set /a num2=%%i
        set /a num1=!num!%%!num2!
        if %%i GTR %loop% (set /a n=n+1
             set /a pr!n!=!num!
             call :ca1
             )
       if !num1!==0 (set /a n=n+1
            set /a num=!num!/%%i
            set /a pr!n!=%%i
            if %%i==%num% (call :ca1) else (call :cccc)
            )
       )
) else (set pr1=1)
goto :eof
:ca1
set prime=!pr1!
if !n! gtr 1 ( for /l %%j in (2,1,!n!) do (rem echo !pr%%j!  & pause
   set prime=!prime!×!pr%%j!
   )
)
echo %num0%分解为质数因子结果为:%num0%=!prime!
echo.&echo.&goto begin
pause>nul COPY

TOP

返回列表