YES
O(n^2)
TRS:
 {
   filter(cons(X), 0(), M) -> cons(0()),
  filter(cons(X), s(N), M) -> cons(X),
          sieve(cons(0())) -> cons(0()),
         sieve(cons(s(N))) -> cons(s(N)),
                   nats(N) -> cons(N),
                 zprimes() -> sieve(nats(s(s(0()))))
 }
 DUP: We consider a non-duplicating system.
  Trs:
   {
     filter(cons(X), 0(), M) -> cons(0()),
    filter(cons(X), s(N), M) -> cons(X),
            sieve(cons(0())) -> cons(0()),
           sieve(cons(s(N))) -> cons(s(N)),
                     nats(N) -> cons(N),
                   zprimes() -> sieve(nats(s(s(0()))))
   }
  Matrix Interpretation:
   Interpretation class: triangular
               [3]
   [zprimes] = [1]
   
          [X1]    [1 0][X1]   [1]
   [nats]([X0]) = [0 0][X0] + [0]
   
           [X1]    [1 0][X1]   [1]
   [sieve]([X0]) = [0 0][X0] + [0]
   
       [X1]    [1 0][X1]   [0]
   [s]([X0]) = [0 0][X0] + [0]
   
            [X5]  [X3]  [X1]    [1 0][X5]   [1 0][X3]   [1 0][X1]   [2]
   [filter]([X4], [X2], [X0]) = [0 0][X4] + [0 0][X2] + [0 0][X0] + [0]
   
         [0]
   [0] = [0]
   
          [X1]    [1 0][X1]   [0]
   [cons]([X0]) = [0 0][X0] + [0]
   
   
   Qed