The running time of algorithm A is at least O(n²)
Let's assume the runtime of algorithm A
T(n) = O(log n)
From this we already have
T(n) <= c.log n
What the statement tries to say by at least O(n²) is that
T(n) <= c.n²
=> c.log n <= c.n² #for some c>0 and n>=n0
Which is quite obvious. When we already know T(n) <= c.logn
, saying T(n) <= c.n2
does not add value.
So, when we already have a lower or upper bound of an algorithm, to say that the bound is at least or at most (respectively) never adds any new information that we already do not know.
To answer your second question
I know that any linear function a⋅n+b is O(n) and also O(n²). Is it
also O(n³)?
Yes. By definition of upper bound (big-O) it just means that
a.n+b <= c.n
So, if this is true then this is also true
a.n+b <= c.n³