Start by evaluating #f# at the integers in #[-3,3]#. If we cannot get 3 disjoint subintervals on which #f(x)# has at least one zero using integers, we'll refine our search by also using the midpoints between the integers. (And if necessary we will further refine our partition of #[-3,3]#)
#{:(bb"Integer "x," ",f(x)),(" "-3," ", -15),(" "-2," ",-1),(" "-1," "," "1),(" "" "0," ",-3), (" "" "1," ",-7), (" "" "2," ",-5), (" "" "3," "," "9) :}#
Polynomial functions are continuous at every real number, so #f# is continuous on every closed interval.
#f# is continuous on #[-2,-1]# and #0# is between #f(-2)# and #f(-1)#, so #f# has a zero in #[-2,-1]#
#f# is continuous on #[-1,0]# and #0# is between #f(-1)# and #f(-0)#, so #f# has a zero in #[-1,0]#
#f# is continuous on #[2,3]# and #0# is between #f(2)# and #f(3)#, so #f# has a zero in #[2,3]#
Therefore, #f# has at least 3 zeros in #[-3,3]#.
#f# is degree three, so it has at most 3 zeros in #RR#
So #f# has exactly 3 zeros in #[-3,3]#