תכנות - שיעור 29 12/February/2006    

תכונות פרוק לגורמים ראשוניים

תיארנו את החוקיות שנרמז עליה בתרגיל 3 של שעור קודם. נניח שנתונים הפרוקים למכפלות ראשוניים של

lteq1.png

אז מתקבלים הפרוקים:

lteq2.png

לדוגמא:

lteq3.png

בכדי שהפרוקים יכילו את אותם המספרים הראשוניים , נוסיף את החסרים עם חזקות אפס:

lteq4.png

וכך נוכל לקבל:

lteq5.png

בסיסים

ב-Python אפשר כמובן, כפי שהשתמשנו לקבל את התו (מחרוזת באורך 1) שמתאר מספר D, שמקיים lteq6.png על ידי

c = "%d" % D
אבל יש דרך כללית יותר, וזאת על ידי

digits = "0123456789"
c = digits[D]

הזכרנו את חשיבות בסיס-2 (Binary) במחשבים, וכן את העובדה שבסיס-16 משמש לעזר, כך שכל 4 ספרות בבסיס-2 מיוצגות על-ידי ספרה אחת בבסיס lteq7.png . בבסיס 16, אנו זקוקים ל-6 סימנים נוספים לספרות שיתארו את המספרים D המקיימים: lteq8.png . לשם כך משמתמשים ב

lteq9.png
ואם lteq10.png אז הפקודות ב-Python
digits = "0123456789abcdef"
c = digits[D]

נותנות את התו המבוקש.

תרגילים

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

תוכלו לראות או להוריד פתרון לתרגיל 3 שניתן בשעור קודם .

חדשים:

  1. כתוב פונקציה base16(n) שמקבלת מספר lteq11.png ומחזירה string שהוא הצגת המספר בבסיס 16 מבלי להשתמש בפעולת האחוז % של Python.
    לדוגמא הקריאה ל- base16(0) תחזיר:
    "0"
    והקריאה ל- base16(3134520014) תחזיר (:רע לפנים:)
    "bad4face"
  2. המספר
    B = 9547848065153773335707495885453566120069130270246768806790708393909999
    הנו ראשוני. נגדיר
    lteq12.png
    בעזרת החוקים שלמעלה ובלי עזרת מחשב, חשבו את lteq13.png .
    בסיוע אינטראקטיבי של Python לפעולות כפל בלבד חשבו את lteq14.png .

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