[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 terse 于 2013-7-5 12:31 编辑

回复 6# PowerShell
首先bat 做此类肯定有局限的
不过在前面说了权当自娱自乐
BAT支持最大变量字节是8k
bat做此类真的是自娱自乐 玩玩算法而已 故本人后做的 大数开方 和 大数除法 也就不放上来了

另 一楼是 大数阶乘 二楼是大数乘法

TOP

本帖最后由 PowerShell 于 2013-7-5 19:16 编辑

1 这些代码我都看不懂
2 2楼和4楼能算多大的数捏?
3 我写过用powershell + .net4 算 9个9的阶乘的脚本习作,再大了就太慢了,毕竟是脚本语言。但是代码在家呢,今明天我会编辑此贴发上来共赏。
4 python也能算,在win中,算数学最恰当的应该是f#语言,各位菜鸟不可不知。其他的有matlab,pascal之类的。主要就是玩数学库。用cpu,显卡玩。用bat玩阶乘,我觉得算是原始时代,最差的。

--------------------------------------
搞错了,下面的是5个9的,我的机子跑5个9的话,半分钟左右。单cpu核心。汗啊。
不过如果9个9的话,你有大内存+快cpu,跑几个小时应该也能成。5个9那块要改成9个9,其他代码不用改任何。
-------------------------------------------------------------------------
Write-Host "注意:安装 .net4 先!"
Write-Host "注意:本程序已经测试过,成功运行,结果前n位为:28462596809170545189064132121198688901480"

[reflection.assembly]::loadwithpartialname("System.Numerics")
$anser_first="1"
$大数=[System.Numerics.BigInteger]:arse($anser_first)
$开始时间 = Get-Date
for ($i=99999;$i -gt 1;$i--)
{
$大数 *= $i

}
$结束时间 = Get-Date

$计算用时 = $结束时间 - $开始时间
Write-Host '计算用时为:',$计算用时,'请按回车键显示结果'
timeout /t 20
$大数.ToString()
脚本是写给人看的,是写给用户看的,而不是写给机子看的
用户能看懂、会修改的脚本,才是好脚本。
写易懂的powershell脚本帮人解决问题,进而让用户学会自渔,吾所愿也

TOP

为 学批处理的第一个程序 汗一个

TOP

http://www.bathome.net/viewthread.php?tid=17686&highlight=%BD%D7%B3%CB
数学研发网的一个网友,这是他学批处理的第一个程序,

TOP

把大数除法  大数开方 以及加减 运算效率提上去
权当自娱自乐

TOP

这样 大数乘法似乎效率可以高点了
论坛上 乘法的运算应该有了
如版主认为 重复贴 可删除
  1. @echo off&setlocal enabledelayedexpansion
  2. set X=33478071698956898786044169848212690817704794983713768568912431388982883793878002287614711652531743087737814467999489
  3. set Y=36746043666799590428244633799627952632279158164343087642676032283815739666511279233373417143396810270092798736308917
  4. for %%i in (X Y) do (
  5. set $%%i=000!%%i!&set S=!$%%i!&set #%%i=1
  6.     for %%j in (4096 2048 1024 512 256 128 64 32 16 8 4 2 1)do if "!S:~%%j!" neq "" set/a #%%i+=%%j&set "S=!S:~%%j!"
  7. )
  8. set j=0000
  9. for /l %%i in (4 4 %#X%) do (
  10.     for /f "tokens=* delims=0" %%a in ("!$x:~-%%i,4!") do (
  11.         if "%%a" neq "" (
  12.            set s=&set i=0000
  13.            for /l %%j in (4 4 %#Y%) do (
  14.                for /f "tokens=* delims=0" %%b in ("!$y:~-%%j,4!") do (
  15.                    if "%%b" neq "" (
  16.                       set /a i=%%a*%%b+1!i:~-4!+1!j:~-%%j,4!+0x5F592E0
  17.                    ) else set/a i=1!i:~-4!+1!j:~-%%j,4!+0x5F592E0
  18.                )
  19.                      set s=!i:~-4!!s!&set i=!i:~,-4!
  20.            )
  21.                      set j=!i!!s!
  22.         )
  23.                      set str=!j:~-4!!str!
  24.                      set j=%j%!j:~1,-4!
  25.     )
  26. )
  27. for /f "tokens=* delims=0" %%i in ("!j!!str!") do echo %%i
  28. pause
复制代码

TOP

返回列表