תכנות - שיעור 21
4/December/2005
הוצאת שורש
חזרנו לנושא הוצאת שורש ממספר, שהתחלנו בו
בשעור 18
.
הרחבנו קצת את הדיון.
שמנו לב שאם
אז
ואם
אז
בכל מקרה אם
אז
לכן
כך ניתן להשתמש
באי-השויון האחרון, לחסמים התחלתיים.
שרשים מסדר כלשהו
שרש רבועי הוא למעשה פתרון של המשואה:
אנו מעונינים לפתור גם משואות כמו
כלומר לחשב את
לשמחתנו, האלגוריתם
שבתכנית
יכול לעבוד אם רק נשנה מעט את החשוב הפנימי
ובמקום
נחשב את
החלק השלם של השורש
כאשר מתענינים בחלק השלם של שורש של מספר שלם,
החישוב הרבה יותר יעיל ומהיר. פשוט דואגים לבצע את כל הפעולות החשבוניות
במספרים שלמים.
פתרונות לתרגילים קודמים
להלן
פתרון למציאת gcd ו- lcm של מספר כלשהו של מספרים
- תרגיל שניתן
בשעור קודם.
תרגילים
-
כתוב תכנית שמקבלת מספר ממשי
ומספר שלם ולא שלילי
ומחשבת ומדפיסה את
-
תרגיל דומה, אלא שעתה גם a הינו שלם אי-שלילי, ואנו מעונינים רק
בחלק השלם של השרש. הגדירו והשתמשו בפונקציה
introot(a, n)
ודאגו לכך שכל החישובים יהיו במספרים שלמים.
-
כתבו תכנית ובה פונקציה שמקבלת מספר שלם כפרמטר
isSquare(n)
ומחזירה True אם יש למספר שורש רבועי שלם ומחזירה False אחרת.
התכנית תקרא לפונציה
עבור כל המספרים שנתנים בשורת הפקודה, ותדפיס את "פסק הדין".
חזרה לעמוד האם