תכנות - שיעור 36 10/May/2006    

מספר המחלקים של מספר

פתרנו את תרגיל 5 של שעור 33.

ראינו שאם מספר lteq1.png מחלק את המספר lteq2.png או בניסוח מתמטי:

lteq3.png
אז כל הראשוניים שבפרוק של lteq4.png חייבים להופיע בפרוק של lteq5.png והחזקות של הראשוניים שב- lteq6.png חייבות להיות לא גדולות מאלה של החזקות של הראשוניים שב- lteq7.png . לדוגמא: נניח
lteq8.png
אז המחלקים שלו חייבים להיות מהצורה
lteq9.png
כאשר
lteq10.png
ולכן 11 אפשרויות עבור a ו 21 אפשרויות עבור b ומכאן שיש
lteq11.png
מחלקים. באופן דומה למספר
lteq12.png
יש
lteq13.png
מחלקים.

מלכות על לוח שחמט

המשכנו בבעיה שהוצגה בשעור קודם. עכשיו כשבעזרת התמורות אנו יודעים למצוא את כל הפתרונות עבור צריחים, נוכל לסנן מתוכם פתרונות שיהיו טובים גם למלכות. כדי לפסול פתרונות נצטרך לזהות האם שתי מלכות מאימות אחת על השניה. לכן יש לדעת איך לבדוק אם שתי משבצות נמצאות על אלכסון אחד.

בדיקת אלכסונים

ישנם שני סוגי אלכסונים. אלכסון "/" מדרום מערב לצפון מזרח ואלכסון "\" מדרום מזרח לצפון מערב. לדוגמא המשבצת: lteq14.png נמצאת על אלכסון אחד עם המשבצות:
lteq15.png
ועל אלכסון שני עם המשבצות:
lteq16.png


תרגילים

פתרונות לקודמים

צפו או הורידו פתרון לתרגיל 3 (התמורה הבאה) של שעור קודם.

חדשים

  1. לסיים תרגילים קודמים.
  2. כתבו פונקציה
    same_diagonal_SW2NE(x0, y0, x1, y1)
    שמקבלת 4 מספרים שמתארים שתי משבצות
    lteq17.png
    ומחזירה True אם המשבצות על אותו אלכסון "/" שעובר מדרום מערב לצפון מזרח, ומחזירה False אם הן לא על אותו אלכסון שכזה.
  3. כתבו פונקציה דומה
    same_diagonal_SE2NW(x0, y0, x1, y1)
    שבודקת עבור אלכסון "\" שעובר מדרום מזרח לצפון מערב.

חזרה לעמוד האם