The upper bound automatically leads to a construction algorithm. First find the prime factorization in \(n^{o(1)}\)  time, then compute the desired \(B\)  in \(n^{o(1)}\)  time, and then cover each \(\bigcup _{d|n/b, d\le s}_{n/b,d}\)  using \(\mathcal {S}_\ell (_{n,b})\)  for \(b\in B\) . If we use the linear time greedy algorithm for set cover, then the running time becomes \(O(n\ell )\)  [1]}.
