הנפה של ארטוסתנס – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
WillNess (שיחה | תרומות)
מ הגהה
מאין תקציר עריכה
שורה 3:
[[קובץ:Sieve_of_Eratosthenes_animation.gif|שמאל|ממוסגר|מציאת כל המספרים הראשוניים בין 2 ל-120 באמצעות הנפה של ארטוסתנס, כשהסימון מתחיל ממספר בריבוע.]]
 
ב[[תורת המספרים]], '''ה[[מסננת|נפה]] של ארטוסתנס''' הוא [[אלגוריתם]] פשוט למציאת כל ה[[מספר ראשוני|מספרים הראשוניים]] עד ל[[מספר שלם]] מסוים. הנפה הומצאה על ידי המתמטיקאי היווני [[ארטוסתנס]] .
 
מתחילים עם רשימת כל המספרים השלמים מ-2 ועד המספר הנבחר. בכל שלב, המספר הקטן ביותר ברשימה שעוד לא טופל מוכרז כראשוני, וכל הכפולות שלו (שהן [[מספר פריק|מספרים פריקים]]) מסומנות בתוך הרשימה. בסופו של דבר כל המספרים ברשימה שלא סומנו הם המספרים הראשוניים.
 
את הכפולות מוצאים על ידי ספירה מהמספר כלפי מעלה בצעדים של אותו מספר. למשל, עבור ''3: 6, 9, 12, 15, ...'' . יהיו גם מספרים שיסומנו יותר מפעם אחת, למשל ''15 = 3 * 5 = 5 * 3''. לכן את הספירה ניתן להתחיל מהמספר בריבוע. כמו כן ניתן לעבוד עם המספרים האי־זוגיים בלבד ולספור בצעדים כפולים, למשל עבור ''5: 25, 35, 45, 55, ...'' .
 
את המספר 1 אין כוללים ברשימה, משום שהוא לא נחשב לראשוני. ראו [[מספר ראשוני]] להסבר בעניין זה.
 
 
==דוגמה==
להלן פעולות האלגוריתם עבור המספרים עד 20.
 
* רושמים את המספרים מ-2 ואילך, עד לגבול שקבענו מראש.
 
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
 
* 2 הוא המספר הראשוני הראשון. סופרים מ 4 בצעדים של 2 ומסמנים את המספרים האלה:
 
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
^ ^ ^ ^ ^ ^ ^ ^ ^
2
2
 
* המספר הבלתי מסומן הראשון מעל 2 ברשימה הוא 3, המספר הראשוני הבא. סופרים מ 9 בצעדים של 3 ומסמנים:
 
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
- - - ^ - ^- - ^ - ^- -
2 3
* המספר הבלתי מסומן הראשון מעל 3 ברשימה הוא 5. הספירה אמורה להתחיל מ 25 אך מספר זה גדול מ 20. לכן אנו מסיימים. המספרים הבלתי מסומנים ברשימה כעת הם הם כל המספרים הראשוניים מ 2 עד 20:
 
* המספר הבלתי מסומן הראשון מעל 3 ברשימה הוא 5. הספירה אמורה להתחיל מ 25 אך מספר זה גדול מ 20. לכן אנו מסיימים. המספרים הבלתי מסומנים ברשימה כעת הם הם כל המספרים הראשוניים מ 2 עד 20:
 
2 3 5 7 11 13 17 19
 
הסימנים שסימנו במהלך הפעולה מהווים את הנפה שדרך החורים בה עוברים המספרים הראשוניים.
שורה 41 ⟵ 36:
SmallPrimeList
 
Input: n (whole number)
Output: P[] (a list of all primes <= n)
 
1. b[n] := {1,1,...,1}. (a bit array of n one's, 1-based).
 
2. For i = 2 while i * i <= n step 1 do:
If b[i] == 1 then
For j = i * i to n step i do:
b[j] := 0.
 
3. For k = 2 to n do:
If b[k] == 1 then
add k to P[].
 
4. Return P[].
</syntaxhighlight>
 
שורה 61 ⟵ 56:
{{ויקישיתוף בשורה}}
*[http://www.box.net/shared/3sd3l62b5b הורדת יישום] הפועל לפי שיטת הנפה של ארטוסתנס. (12KB, דורש [[.NET|Microsoft .NET framework]], גרסה 4.0 לפחות)
* ארי שביב, [https://davidson.weizmann.ac.il/online/mathcircle/articles/%D7%94%D7%A0%D7%A4%D7%94-%D7%A9%D7%9C-%D7%90%D7%A8%D7%98%D7%95%D7%A1%D7%AA%D7%A0%D7%A1 הנפה של ארטוסתנס], באתר [[מכון דוידסון]], אוקטובר 2014
* {{MathWorld}}
 
[[קטגוריה:מבחני ראשוניות]]