这是什么
一个独立的 Windows 命令行程序。默认计算 2^100000000,把完整 30,103,000 位
十进制结果写进文件,并在屏幕上显示摘要和耗时。
怎么用
方式一最简单:双击 pow2dec_main.exe
会弹出窗口,算完显示结果,最后停住等你按 Enter 才关闭。
结果写在 exe 所在目录的 result.txt
方式二
pow2dec_main.exe 算 2^100000000 -> result.txt
pow2dec_main.exe 1000000 算 2^1000000
pow2dec_main.exe 100000000 D://a.txt 指定输出文件
pow2dec_main.exe 100000000 out.txt --no-pause 不等 Enter(脚本用)
系统要求
64 位 Windows(Win7 及以上;32 位系统跑不了) 任意 64 位 x86 CPU(只用 SSE2 基线指令,不需要 AVX) 内存:峰值约 160 MB,建议留出 1 GB 以上 硬盘:结果文件 30 MB预期输出
2^100000000
算完了
二进制部分: 2^100000000 = 1<<100000000,单个置位,无需计算(耗时 <0.001 ms)
十进制转换耗时: 约 800 ms
[1] NTT 平方 x26 : 840.004 ms ( 97.3%)
[2] 十进制渲染 : 17.018 ms ( 2.0%)
[3] 其他(截断/乘2) : 6.625 ms ( 0.8%)
截断窗口 K = 3344810 limbs (base 10^9)
位数: 30103000
前 50 位: 36846659369804587632090923909842219150699658122675
后 50 位: 07576357285681169309839668169204130048177787109376
写文件: 19.539 ms (30103000 位 -> result.txt)
合计: 墙钟 892.122 ms,CPU 3344 ms (3.7 核)
耗时随核数变化:8 核约 0.8 秒,单核约 2 秒。
作为对比,Python 的 str(1<<100000000) 需要 5.5 秒。
怎么确认结果是对的
前 50 位 = 36846659369804587632090923909842219150699658122675
后 50 位 = 07576357285681169309839668169204130048177787109376
总位数 = 30103000
这三项是权威参考值,与 Python str(2**100000000) 逐字节比对过,完全一致。
可能遇到的问题
1. 双击弹出“Windows 已保护你的电脑”
-> 未签名程序的正常提示。点“更多信息” -> “仍要运行”。
2. 杀毒软件报毒
-> 误报。程序不联网、不写注册表、不改系统设置,只做计算并写一个输出文件。
3. 提示 cannot write / 写不了文件
-> 别放在 C://Program Files 或 C://Windows 下。放桌面、下载目录或 D 盘。
4. 想让它算完就退出、不要停住
-> 命令行加 --no-pause,或设环境变量 POW2DEC_NO_PAUSE=1
5. 中文显示成乱码
-> 已处理过(控制台走 WriteConsoleW 直写 UTF-16)。若仍乱码,
先在命令行执行 chcp 65001 再运行。
技术信息
* 单文件,无需安装,不依赖任何额外 DLL(只用到系统自带的 KERNEL32 / msvcrt)
* 算法:base 10^9 limb + 双素数 Montgomery 域 NTT 乘法,
从左到右扫描 E 的二进制位做平方 + 截断窗口
* 编译:GCC 16.2.0 x86_64-w64-mingw32,-O2,OpenMP(libgomp 已静态链入)
* 本机(i7-14650HX 24 线程)实测 0.78~0.9 秒;CPython 3.13 为 5.55 秒
下载 https://luocch.lanzoub.com/i3X7a4a00z6b 密码:vear