Sieb des Eratosthenes ist ziemlich fix, aber nicht die beste Methode glaube ich. Jede Zahl einzeln kannste in die Tonne treten.
Du machst dir am besten ein boolsches Array (geringer Speicherverbrauch und ist schnell).
Dann fängst du bei 2 an bis zu der Zahl die du ermittelt haben möchtest.
2 ist keine Primzahl, jedes ist immer das Vielfache von 2 eine Primzahl. Daher streichst du alles Vielfache von 2 (4, 6, 8, 10 etc.) indem du meinetwegen in die Stelle des Arrays auf True oder False setzt.
Dann gehst du wieder unüberprüft mit 3, also erhöhst immer um einen.
3 ist auch keine Primzahl und du setzt wieder in jede 6., 9. 12. Stelle usw. das Array auf True oder False (das kannst du nach Belieben machen).
Wenn du es später anzeigen willst nimmst du einfach alle Zahlen aus dem Array raus, welche du mit True oder Boolean als Primzahlen markiert hast.
Wenn du willst kann ich dir ein Delphi-Projekt dazu schicken. Aber ich vermute dass es noch bessere und schnellere Verfahren dazu gibt.