我开始研究计算复杂性、BigOh 表示法等,我的任务是做一个整数分解算法并确定它的复杂性。我已经编写了算法并且它正在工作,但是我在计算复杂度时遇到了麻烦。伪代码如下:
DEF fact (INT n)
BEGIN
INT i
FOR (i -> 2 TO i <= n / i STEP 1)
DO
WHILE ((n MOD i) = 0)
DO
PRINT("%int X", i)
n -> n / i
DONE
DONE
IF (n > 1)
THEN
PRINT("%int", n)
END
我认为我试图做的事情是非常错误的:
f(x) = n-1 + n-1 + 1 + 1 = 2n
所以
f(n) = O(n)
我认为这是错误的,因为分解算法应该是计算困难的,它们甚至不能是多项式的。那么你有什么建议可以帮助我?也许我在晚上的这个时候太累了,我把这一切都搞砸了:(
先感谢您。