We show that for every n≥1 and over any finite alphabet, there is a word whose circular factors of length n have a one-to-one correspondence with the set of primitive words. In particular, we prove that such a word can be obtained by a greedy algorithm, or by concatenating all Lyndon words of length n in increasing lexicographic order. We also look into connections between de Bruijn graphs of primitive words and Lyndon graphs.Finally, we also show that the shortest word that contains every p-power of length pn over a k-letter alphabet has length between pkn and roughly (p+1k)kn, for all integers p≥1. An algorithm that generates a word which achieves the upper bound is provided.