  To equip DNA-based data storage with random-access capabilities, Yazdi et al.
(2018) prepended DNA strands with specially chosen address sequences called
primers and provided certain design criteria for these primers. We provide
explicit constructions of error-correcting codes that are suitable as primer
addresses and equip these constructions with efficient encoding algorithms.
  Specifically, our constructions take cyclic or linear codes as inputs and
produce sets of primers with similar error-correcting capabilities. Using
certain classes of BCH codes, we obtain infinite families of primer sets of
length $n$, minimum distance $d$ with $(d + 1) \log_4 n + O(1)$ redundant
symbols. Our techniques involve reversible cyclic codes (1964), an encoding
method of Tavares et al. (1971) and Knuth's balancing technique (1986). In our
investigation, we also construct efficient and explicit binary balanced
error-correcting codes and codes for DNA computing.
