在分析此算法的时间复杂度时需要帮助

时间:2018-08-22 17:35:02

标签: algorithm time-complexity big-o

有一种算法要求我们打印数字质数因子的所有子序列。 例如,如果数字为6,我们将打印:

{},{2},{3},{2 3}

现在,给定的约束是数字的素数不超过13。

复杂度显然是 O(pow(2,数字的素数))

现在,我的疑问是: 由于我们知道小于或等于13的素数个数仅为6。这使得最差的时间复杂度 O(pow(2,6))显然是O(1)。那么,既然我们已经知道所有可以作为时间复杂度候选的常数值,那么我们可以将该算法称为恒定时间算法吗?

1 个答案:

答案 0 :(得分:1)

不是那么快。

如果k = 2n2 * 3n3 * 5n5 * 7n7 * 11n11 * 13n13,则子序列数为(n2+1) * (n3+1) * (n5+1) * (n7+1) * (n11+1) * (n13+1),而这些序列的平均长度为(n2 + n3 + n5 + n7 + n11 + n13)/2很容易将每个术语为{{1} }。然后,您可以在输出大小上设置O(log(k))的上限。 (如果每个O(log(k)7)的{​​{1}},则所有6个术语同时处于该比例尺。)

如果未将数字分解为因数,则必须增加先分解数字的难度。