最近在做一个项目,内容是随机生成 2256 规模的素数。
项目中用的是 O(n2) 的一万进制压位高精乘法, n 是一万进制高精度数字 a 的位数,n 不超过20,认为 n=O(loga)。
这样就导致除法复杂度是 O(n3)
二分快速幂复杂度变成了 O(n4) (指数规模与 a 相当,loga 的复杂度也就是 n 的复杂度)
MillerRabin判素数 O(n5) (loga 的复杂度也就是 n 的复杂度)
选取一个素数变成了 O(n6) (因为素数定理的找素数的期望是运行MillerRabin O(loga)次,也就是 n 的复杂度)
我手上有FFT的板子,但是是十进制FFT的板子,如果传参到一万进制过去,把模数和除数从 10 变成一万来把上面所有复杂度降一个 n 变成 logn?