תכנות - שיעור 27
29/January/2006
Python - Lists and Tuples
ראינו שבשפת Python
יש הבדל בין רשימה
(list)
לבין
-יה סדורה
(
tuple
).
ברשימה אנו יכולים לבצע פעולות של הוספה, החסרה ושינוי אברים שבה.
אך לא כך ב-tuple. רשימה מיוצגת על ידי סוגריים מרובעות,
לעומת tuple שמסומנת על ידי סוגריים עגולות.
חפוש ראשוניים
הצגנו את האלגוריתם
הנפה של ארטוסתנס
(המסננת) או
(The
Sieve of Eratosthenes
).
באלגוריתם זה מתחילים עם רשימה שמאתחלים אותה בערכי אמת,
ובכל שלב
מסמנים בשקר, את המקומות
שאינם
ראשוניים "בגלל"
.
בקישורים, נמצא תיאור יותר מפורט מדויק וכן הדגמה חיה.
תרגילים
פתרונות לתרגילים קודמים
תוכלו
לראות
או
להוריד
פתרון לחפוש שלשות פיתגוראיות "מענינות". כמו כן
לראות
או
להוריד
תכנית "תמימה" המחפשת מספרים ראשוניים.
שניתנו
בשעור קודם
.
חדשים:
-
כתבו פונקציה
factorize(n)
שמקבלת מספר
,
מוצאת את הפרוק שלו
כך ש
הם מספרים ראשוניים. הפונקציה תחזיר את רשימת הזוגות
(2-tuples)
-
הבאה:
[(b1,p1), (b2,p2), ... (bm,pm)].
ראו דוגמא בתרגיל הבא.
-
כתבו פונקציה
factors2str(factors_list)
שמקבלת רשימה כמו בתרגיל הקודם ומחזירה string באופן הבא:
"b1^p1 * b2^p2 * ... * bm^pm"
לדוגמא, עבור
הפונקציה factorize תחזיר
[(2,3), (7,1), (11,2)]
והפונקציה factors2str אם היא תקבל את הרשימה האחרונה, אז היא תחזיר
"2^3 * 7^1 * 11^2"
.
-
כתבו תכנית שמשתמשת בשתי הפונקציות שבתרגילים הקודמים.
התכנית תקבל שני מספרים
ותציג את הפרוק של חמשת המספרים הבאים:
בדקו את התכנית עבור כמה מקרים, למשל
האם תוכלו לזהות חוקיות?
-
כתבו תכנית שמממשת את האלגוריתם של ארטוסתנס. התכנית תדפיס
את כל המספרים הראשוניים עד גבול עליון שניתן על-ידי המשתמש.
חזרה לעמוד האם