Ja widzę kilka opcji, pierwsza to właśnie wspomniane tablicowanie, tylko pytanie jaki limit kodu źródłowego, a jak nie to możesz napisać sito, tylko trzymać na vectorze booli i wtedy masz małą pamięć bardzo (taką jak bitset o ile się nie mylę). Sito tak zaimplementowane na pamięci bitsetowej musi wejść.