【发布时间】:2019-12-02 19:54:55
【问题描述】:
我目前正在使用费马小定理(这是强制性的)寻找素数的任务,并且我拥有的程序(我认为)具有复杂性 O(logn)。然而,对于非常大的数字,它会拖得太久(我们说的是 1200 位,该类的大小),比如 8 分钟,我不知道这是否正常。在我们知道复杂度的情况下,有没有办法计算输入的平均时间?
【问题讨论】:
我目前正在使用费马小定理(这是强制性的)寻找素数的任务,并且我拥有的程序(我认为)具有复杂性 O(logn)。然而,对于非常大的数字,它会拖得太久(我们说的是 1200 位,该类的大小),比如 8 分钟,我不知道这是否正常。在我们知道复杂度的情况下,有没有办法计算输入的平均时间?
【问题讨论】:
如果您的算法具有渐近时间复杂度 f(n),这告诉您 lim T(n+1)/T(n) = lim f(n+1)/f(n) 当 n 变为无穷。因此,如果您知道 N、f 和 T(N),并且如果 N 已经足够大以至于可以逼近渐近行为,那么您可以估计 T(N+1) = T(N) * f(N+1) /f(N)。要选择足够大的 N,您需要了解所涉及的常数因子。
【讨论】: