10-01-2015, 22:57
|
|
|
|
חבר מתאריך: 29.09.09
הודעות: 12,907
|
|
בשתי לולאות
למספר הנוכחי נקרא X
למחלק הנוכחי נקרא I
I=2
X=INPUT
הלולאה החיצונית: כל עוד X שונה מ1, תקרא ללולאה הפנימית.
הלולאה הפנימית: כל עוד I*I אינו גדול מX:
אם X מתחלק בI - הוסף *I למחרוזת הפלט, חלק את X בI וצא מהלולאה הפנימית.
אחרת, העלה את I ב1
ביציאה מהלולאה הפנימית:
אם I בריבוע עבר את X, אין לX מחלקים, והוא ראשוני. הוסף *X למחרוזת הפלט , הפוך את X ל1 וצא מהלולאה הפנימית.
לאחר שהלולאה החיצונית הסתיימה, החלף את התו הראשון במחרוזת הפלט - ברווח.
כנראה יש שיטה עדיפה לטיפול בפלט, אולי הדפסת 1 בתחילת החישוב.
כל מחלק שתמצא, לא מתחלק במספרים נמוכים ממנו (אחרת הם היו נמצאים) - ולכן הוא ראשוני.
ניתן לשפר באמצעות הכנת מערך מספרים ראשוניים.
נערך לאחרונה ע"י ai22 בתאריך 10-01-2015 בשעה 23:04.
|