这是什么:把 a 的 E 次方的完整十进制展开算出来的小工具。比如 2 的一亿次方(2^100000000)一共有 30,103,000 位,本程序约 0.56 秒**算完并写进文件。单文件、免安装、不联网、不写注册表。
收到的是
pow2dec-win64.zip?解压即可用,里面就一个主程序 + 说明文档。
一、最快上手(不想看长文只看这节)
pow2dec_main.exe 放到桌面或 D 盘(别放 C:\Program Files,会写不了文件)。* 屏幕显示位数、耗时、前 50 位、后 50 位;
* 完整 30,103,000 位写入 exe 旁边的 result.txt(约 30 MB)。
就这么多。想算别的数、想自定义输出文件,往下看第二节。
二、全部用法
打开 cmd(或资源管理器地址栏输入 cmd 回车),cd 到 exe 所在目录。
| 你输入 | 它算什么 | 结果写到 |
|---|---|---|
pow2dec_main.exe | 2^100000000(默认) | result.txt |
pow2dec_main.exe 1000000 | 2^1000000 | result.txt |
pow2dec_main.exe 1000000 out.txt | 2^1000000 | out.txt |
pow2dec_main.exe 3 100000 | 3^100000 | result.txt |
pow2dec_main.exe 123456789 1000 o.txt | 123456789^1000 | o.txt |
pow2dec_main.exe "7^50000" | 7^50000(a^E 写法) | result.txt |
pow2dec_main.exe -3 17 | (-3)^17 = -129140163 | result.txt |
pow2dec_main.exe 2 8000000000 --yes | 24 亿位大任务,不再询问 | result.txt |
参数规则(4 条,覆盖一切):
补充:
* 底数可以是任意长的十进制整数(几百位也行),带负号则按负底数算(指数为奇数时结果带负号)。
* --no-pause 或 -n:算完立即退出,不等回车(脚本/批处理用)。
* --yes 或 -y:大任务不再询问确认。
* --help:显示全部用法。
*
三、屏幕输出逐行解读(真实输出)
2^100000000 ← 你要算的题
算完了 ← 幂已经算完
计算数值 2^100000000 : 556.2 ms(26 次平方 + 12 次乘底数)
← 把这个数算出来花了多久(26 次平方:100000000 的二进制有 27 位)
十进制转换耗时: 571.4 ms ← 算出的数转成十进制文本总共多久(含上面)
底数 2 (1 位) | 位数 30103000 ← 结果一共 30103000 位
[1] NTT 平方 x26 : 556.0 ms ( 97.3%) <- 计算数值
[2] 乘底数 x12 : 0.031 ms ( 0.0%) <- ← 乘 2 是线性移位,几乎不花时间
[3] 十进制渲染 : 14.6 ms ( 2.6%) <- 转文本
[4] 其他(截断/分配) : 0.8 ms ( 0.1%)
截断窗口 K = 3344810 limbs (base 10^9) ← 内部按 9 位一组存储
位数: 30103000
前 50 位: 36846659369804587632090923909842219150699658122675
后 50 位: 07576357285681169309839668169204130048177787109376
写文件: 20.1 ms (30103000 位 -> result.txt)
合计: 墙钟 601.9 ms,CPU 2051 ms (3.4 核) ← 多核在干活
怎么确认结果是对的:2^100000000 的上面三个数(位数 / 前 50 位 / 后 50 位)是权威参考值,与 Python str(2**100000000) 逐位比对过完全一致。你拿到结果后核对这三项即可。
*
四、算多大的数、要多少内存和时间
| 结果位数 | 内存需求 | 时间(参考) |
|---|---|---|
| 3010 万位(默认) | 约 0.4 GB | 约 0.56 秒 |
| 1 亿位 | 约 1.5 GB | 约 2 秒 |
| 6 亿位 | 约 5 GB | 约 14 秒 |
| 10.5 亿位 | 约 6.8 GB | 约 35 秒 |
| 约 12 亿位 | 约 7.4 GB | 约 45 秒(本机 15.7 GB 内存的上限) |
* 位数上限 24.2 亿位。超过会拒绝并说明原因(由算法所用数学结构决定,不是内存问题;内存不够也会明确提示"内存不够"而不是硬算)。
* 大任务会先问一句:预计内存超过 1 GB 时,屏幕会列出"预计占用内存 /输出文件大小 / 预计耗时",输入 y 继续,其它键放弃。在脚本里不会卡住等你输入 —— 那种情况请加 --yes。
*
五、常见问题
--no-pause,或设环境变量 POW2DEC_NO_PAUSE=1。chcp 65001 再运行。*
六、系统要求
* 64 位 Windows(Win7 及以上;32 位系统跑不了)
* 任意 64 位 x86 CPU(只用 SSE2 基线指令,不需要 AVX)
* 内存与硬盘按任务规模(见第四节);单核也能跑,只是慢一些(默认任务约 2 秒)