答案 0 :(得分:5)
答案 1 :(得分:1)
答案 2 :(得分:0)
答案 3 :(得分:0)
我能想到的最有效的算法如下。它应该具有O(n·(log n)²·log log n)的运行时复杂度,而不是具有二次运行时复杂度的朴素算法。
在步骤2和5中,您需要一个十进制乘法算法。对于具有数万个数字的数字,您应该使用在基数10中运行的Schönhage-Strassen算法版本。这将导致上述运行时复杂性。对于较短的数字,根据其长度,应使用Toom-Cook算法,Karatsuba算法或长乘法。但是,我目前无法告诉如何在基数10中实现Schönhage-Strassen算法,因为我能找到的所有完整描述都是针对基数2的,我不知道有足够的数论可以自己推导出来。