מספרים פראיים - לא מצליח עם yield

בתרגיל מספרים פראיים, בכדי למצוא את המספר הראשוני הבא (החל מ-2), ניסיתי ליצור ג’נרייטור. התוצאה היא שאני מקבל לולאה אינסופית.
כשהשתמשתי בפונקציה רגילה - ללא שימוש ב-yield - זה עובד.

מה אני עושה לא נכון?
האם אני אמור לקרוא שוב לפונקציית הג’נרייטור שוב ושוב, או רק לבקש את ה-next שלה?
כי אם כן, מה מקדם אותה? ה-yield?

help

אתה אמור לקרוא ל-next על הגנרטור הקיים שוב ושוב. אם אתה יוצר כל פעם גנרטור חדש תקבל בכל פעם את האיבר הראשון, כי בכל פעם תקרא לגנרטור חדש שיחזיר לך במקרה הזה 2 ואז תדרוס אותו ותתחיל מההתחלה

לייק 1

אוקי, זה מסביר את זה. תודה רבה לך.
אז נניח שאני שולח לג’ניירטור כל פעם את המספר הבא n+1, האם יש בכלל יתרון לג’נרייטור? או שזה אותו הדבר?

בהתחלה חשבתי ליצור פונקציה שתכין את כל המספרים הראשוניים עד למספר המבוקש, ואז ה-yield יקדם את זה עד למציאת כל המכפלות - אבל זה נראה לי בזבוז משאבים - אני לא צריך את כל המספרים הראשוניים.