Upload
igor-kleiner
View
46
Download
10
Embed Size (px)
Citation preview
מבוא לתכנות מדעי
3חלק 4הרצאה
מספרים ראשונים
2016Igor Kleiner
מטרה
לכתוב תוכנה שבודקת האם מספר הוא ראשוני
לפתח אלגוריתם שבודק האם מספר הוא ראשוני או לא
מספר ראשוני
ומתחלק ללא 1-הוא מספר שלם חיובי שגדול מ(prime number)מספר ראשוני •ובעצמו1-שארית רק ב
מספר ראשוני
ומתחלק ללא 1-הוא מספר שלם חיובי הגדול מ(prime number)מספר ראשוני •:ובעצמו1-שארית רק ב
:למשל•
הם מספרים ראשונים2,3,5,7,11,13,17,19,23,29•
הם מספרים לא ראשוניים4,6,9,82,100,121:ומספרים•
מספר ראשוני
ומתחלק ללא 1-הוא מספר שלם חיובי הגדול מ(prime number)מספר ראשוני •:ובעצמו1-שארית רק ב
:למשל•
הם מספרים ראשונים2,3,5,7,11,13,17,19,23,29•
הם מספרים לא ראשוניים4,6,9,82,100,121:ומספרים•
קיים אינסוף מספרים ראשונים: עובדה•
אלגוריתם
כתוב אלגוריתם הבודק האם מספר נתון הוא ראשוני או לא•
אלגוריתם
כתוב אלגוריתם הבודק האם מספר נתון הוא ראשוני או לא•
:תיור כללי של פתרון•
אלגוריתם
כתוב אלגוריתם הבודק האם מספר נתון הוא ראשוני או לא•
:תיור כללי של פתרון•
קבלת קלט ממשתמש1.
אלגוריתם
כתוב אלגוריתם הבודק האם מספר נתון הוא ראשוני או לא•
:תיור כללי של פתרון•
קבלת קלט ממשתמש1.
וממינו1-בדיקת האם יש למספר מחלקים ששונים מ2.
הדפסת תוצאת בדיקה3.
אלגוריתם
X-נסמן את הקלט ב. קבלת קלט ממשתמש1.
.2
אלגוריתם
X-נסמן את הקלט ב. קבלת קלט ממשתמש1.
ללא שאריתN-מתחלק בXנבדוק האם N=2,3,4,….,X-1לכל 2.:ללא שארית אזיN-מתחלק בXאם 1)
אלגוריתם
X-נסמן את הקלט ב. קבלת קלט ממשתמש1.
ללא שאריתN-מתחלק בXנבדוק האם N=2,3,4,….,X-1לכל 2."מספר לא ראשוני"ללא שארית אפשר לעצור את התוכנה ולהדפיס N-מתחלק בXאם 1)
אלגוריתם
X-נסמן את הקלט ב. קבלת קלט ממשתמש1.
ללא שאריתN-מתחלק בXנבדוק האם N=2,3,4,….,X-1לכל 2.ללא שארית אפשר לעצור את התוכנה והדפיס מספר לא ראשוניN-מתחלק בXאם 1)
.3X הוא .........
אלגוריתם
X-נסמן את הקלט ב. קבלת קלט ממשתמש1.
ללא שאריתN-מתחלק בXנבדוק האם N=2,3,4,….,X-1לכל 2.ללא שארית אפשר לעצור את התוכנה והדפיס מספר לא ראשוניN-מתחלק בXאם 1)
.3Xלא ראשוני"נדפיס למסך , הוא לא ראשוני"
אלגוריתם
X-נסמן את הקלט ב. קבלת קלט ממשתמש1.
ללא שאריתN-מתחלק בXנבדוק האם N=2,3,4,….,X-1לכל 1.
ללא שארית אפשר לעצור את התוכנה והדפיס מספר לא ראשוניN-מתחלק בXאם 1)
.1Xנדפיס למסך לא ראשוני, הוא לא ראשוני
raw_input
אלגוריתם
X-נסמן את הקלט ב. קבלת קלט ממשתמש1.
ללא שאריתN-מתחלק בXנבדוק האם N=2,3,4,….,X-1לכל 1.
ללא שארית אפשר לעצור את התוכנה והדפיס מספר לא ראשוניN-מתחלק בXאם 1)
.1Xנדפיס למסך לא ראשוני, הוא לא ראשוני
raw_input
while
אלגוריתם
X-נסמן את הקלט ב. קבלת קלט ממשתמש1.
ללא שאריתN-מתחלק בXנבדוק האם N=2,3,4,….,X-1לכל 1.
ללא שארית אפשר לעצור את התוכנה והדפיס מספר לא ראשוניN-מתחלק בXאם 1)
.1Xנדפיס למסך לא ראשוני, הוא לא ראשוני
raw_input
while
ifprintbreak
אלגוריתם
X-נסמן את הקלט ב. קבלת קלט ממשתמש1.
ללא שאריתN-מתחלק בXנבדוק האם N=2,3,4,….,X-1לכל 1.
ללא שארית אפשר לעצור את התוכנה והדפיס מספר לא ראשוניN-מתחלק בXאם 1)
.1Xנדפיס למסך לא ראשוני, הוא לא ראשוני
raw_input
while
printbreak
תוכנה:כעת אנו יכולים לתרגם את האלגוריתם שלנו לתוכנה1.
http://www.codeskulptor.org/#user42_fMjvkLw36J_0.py
תוכנה:כעת אנו יכולים לתרגם את האלגוריתם שלנו לתוכנה1.
http://www.codeskulptor.org/#user42_fMjvkLw36J_0.py
תוכנה:כעת אנו יכולים לתרגם את האלגוריתם שלנו לתוכנה1.
http://www.codeskulptor.org/#user42_fMjvkLw36J_0.py
תוכנה:כעת אנו יכולים לתרגם את האלגוריתם שלנו לתוכנה1.
http://www.codeskulptor.org/#user42_fMjvkLw36J_0.py
תוכנה:כעת אנו יכולים לתרגם את האלגוריתם שלנו לתוכנה1.
http://www.codeskulptor.org/#user42_fMjvkLw36J_2.py
תוכנה:כעת אנו יכולים לתרגם את האלגוריתם שלנו לתוכנה1.
http://www.codeskulptor.org/#user42_fMjvkLw36J_2.py
תוכנה:כעת אנו יכולים לתרגם את האלגוריתם שלנו לתוכנה1.
http://www.codeskulptor.org/#user42_fMjvkLw36J_2.py
תוכנה:כעת אנו יכולים לתרגם את האלגוריתם שלנו לתוכנה1.
http://www.codeskulptor.org/#user42_fMjvkLw36J_2.py
15487469:כעת אנו יכולים לתרגם את האלגוריתם שלנו לתוכנה1.
http://www.codeskulptor.org/#user42_fMjvkLw36J_2.py
סיכוםרישוניכתבנו אלגוריתם שבודק האם מספר הוא מספר ראשוני או לא 1.
תרגמנו את האלגוריתם לתוכנה2.
ראינו שעבור מספרים ראשונים גדולים התוכנה רצה המון זמן3.
אלה מספיק לבדוק את כל ,N-עד1-אפשר להוכיח שאין טעם לבדוק כל המחלקים מ4.תיקון זה הופך את התוכנה לתוכנה הרבה יותר , sqrt(N)+1עד 1-המחלקים מ
(תרגיל בית)מהירה
• Igor Kleiner (Hebrew version adaptation 2016)