parallel-processing - 任何数字的阶乘都是可并行化的吗?
问题描述
任意数的计算阶乘可以并行吗?如何 ?
解决方案
当然,为什么不呢?乘法是关联的。a * (b * (c * d)) == (((a * b) * c) * d) == (a * b) * (c * d)。分而治之的并行化方案的含义应该很清楚。
但是,这只会对许多数字的产品有任何切实的好处,如果你在谈论阶乘,这意味着你正在处理超出任何计算机本机整数范围的巨大产品,这意味着你正在处理任意精度算术...在这种情况下,您可能有机会并行化单个乘法(Karatsuba 乘法是递归的,并且基于 FFT 的乘法中的 FFT 也非常可并行化),并且如果您可以用完所有资源这样一来,在更高层进行并行化就没有意义了。
对于计算合理大小的阶乘,最快的方法可能是直接的单线程方法,它没有开销。