Skip to main content
🔬 Advanced ✨ New

מחשבון מודולו

חשב את השארית של פעולת חלוקה. מצא a mod b בצורה מיידית עם הסבר שלב-אחר-שלב. כלי מתמטיקה חינמי לתוצאות מדויקות.

מהי פעולת המודולוס?

פעולת המודולוס (מוד, או %) מחזירה את השארית לאחר חלוקת מספר אחד במספר אחר. עבור a מוד b: מחלקים את a ב-b, והתוצאה היא השארית. לדוגמה, 17 מוד 5 = 2 (כי 17 = 3×5 + 2). התוצאה תמיד בטווח [0, b-1] עבור ערכים חיוביים.

הקשר הבסיסי: a = q×b + r, כאשר q הוא המנה (floor(a/b)) ו-r הוא השארית (0 ≤ r < b). מודולוס היא הפעולה הנלווית לחלוקה שלמים — אם a ÷ b = q עם שארית r, אז a מוד b = r. מחשבון זה משתמש בהגדרת המודולוס המתמטית האמיתית (תמיד לא שלילית עבור מחלק חיובי), ולא בשארית החתומה המשמשת בשפות תכנות מסוימות.

חשבון מודולרי — חשבון עם מודולוס קבוע שבו מספרים "מתפתלים" — מהווה את הבסיס לחשבון השעון. שעות בשעון מחושבות מוד 12 או מוד 24. אם השעה היא 10 בבוקר ומוסיפים 5 שעות: (10 + 5) מוד 12 = 3 (אחר הצהריים). התנהגות הפיתול הזו מרכזית לאינספור אלגוריתמים במדעי המחשב, קריפטוגרפיה ותורת המספרים.

דוגמאות למודולו ופתרונות שלב אחר שלב

הבנת המודולוס הופכת לאינטואיטיבית עם דוגמאות מעובדות. עבור כל חישוב להלן, הנוסחה היא: שארית = a − floor(a ÷ b) × b.

ביטוימנה (floor)שארית (a מוד b)אימות
17 מוד 5323×5 + 2 = 17 ✓
20 מוד 4505×4 + 0 = 20 ✓
7 מוד 3212×3 + 1 = 7 ✓
100 מוד 714214×7 + 2 = 100 ✓
13 מוד 13101×13 + 0 = 13 ✓
1 מוד 5010×5 + 1 = 1 ✓
256 מוד 1616016×16 + 0 = 256 ✓
365 מוד 752152×7 + 1 = 365 ✓

שימו לב ש-365 מוד 7 = 1: זה אומר לנו שלשנה שאינה מעוברת יש 52 שבועות שלמים פלוס יום נוסף אחד, וזו הסיבה שיום השבוע משתנה ב-1 בכל שנה שאינה מעוברת. שנה מעוברת (366 ימים) מוד 7 = 2, מה שמשנה את היום ב-2.

יישומים של חשבון מודולרי

מודולו מופיע בכל תכנות ומתמטיקה. בדיקת זוגי/אי-זוגי: אם n % 2 == 0, n הוא זוגי. מערכים מעגליים ומאגרי טבעת: index = (current_index + 1) % array_size מתפתל חזרה להתחלה. טבלאות גיבוב: bucket = hash(key) % num_buckets ממפה כל ערך גיבוב למדד דלי תקף, ומבטיחה שאין גישה מחוץ לגבולות.

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

במערכות דיגיטליות, מודולוס משמש בכל מקום שכתובות זיכרון מעורבות. רשומות טבלת עמודים, בחירת ערכת מטמון ו-I/O ממופה לזיכרון מסתמכים כולם על אינדקס מודולרי. ערכות הוראות מעבד כוללות בדרך כלל הוראה של שארית (דמוית מודולוס) לצד חלוקה, והוראות וקטור SIMD משתמשות במודולוס עבור עטיפת נתיב בתערובות.

בזיהוי שגיאות, בדיקות איתות מחזוריות (CRCs) וסכומי ביקורת מחושבים באמצעות חשבון מודולרי פולינומי מעל GF(2). מספרי כרטיסי אשראי עוברים את אלגוריתם לון (בדיקת מודולוס-10). מספרי ספרים ISBN-10 משתמשים במוד 11. סכומי ביקורת אלה תופסים שגיאות טרנספוזיציה ושגיאות ספרה בודדת בקודים מספריים.

מודולו בקריפטוגרפיה

חשבון מודולרי הוא הבסיס המתמטי של קריפטוגרפיה מודרנית עם מפתח ציבורי. שלושת האלגוריתמים הקריפטוגרפיים החשובים ביותר — RSA, Diffie-Hellman וקריפטוגרפיה של עקום אליפטי — כולם מסתמכים על פעולות המבוצעות מודולוס מספר ראשוני או מורכב גדול.

הצפנת RSA משתמשת בחזקה מודולרית: כדי להצפין הודעה M עם מפתח ציבורי (e, n), חשבו C = M^e מוד n. כדי לפענח, חשבו M = C^d מוד n כאשר d הוא המפתח הפרטי. האבטחה מסתמכת על הקושי בפירוק n (מספר ראשוני למחצה גדול) — בידיעת n בלבד, שחזור p ו-q הוא בלתי אפשרי מבחינה חישובית עבור גדלי מפתח מעל 2048 סיביות.

חילופי מפתחות Diffie-Hellman מאפשרים לשני צדדים להקים סוד משותף על גבי ערוץ לא מאובטח: אליס שולחת A = g^a מוד p, בוב שולח B = g^b מוד p. כל צד מחשב את הסוד המשותף: אליס מחשבת B^a מוד p = g^(ab) מוד p, בוב מחשב A^b מוד p = g^(ab) מוד p. מאזין שמיירט את g^a מוד p ו-g^b מוד p לא יכול לשחזר את g^(ab) מוד p מבלי לפתור את בעיית הלוגריתם הדיסקרטי.

האבטחה של מערכות אלה תלויה באופי החד-כיווני של חזקה מודולרית: חישוב g^a מוד p מהיר (באמצעות ריבוע חוזר, O(log a) כפלים), אך היפוך זה — מציאת g^a מוד p נתון — מאמינים שדורש זמן אקספוננציאלי עבור מספרים ראשוניים גדולים p.

מודולו עם מספרים שליליים ומקרים קצה

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

שפה-7 % 37 % -3הגדרה
Python2-2הסימן עוקב אחר המחלק (מודולו אמיתי)
JavaScript-11הסימן עוקב אחר המחולק (שארית)
C / C++-11הסימן עוקב אחר המחולק (C99+)
Java-11הסימן עוקב אחר המחולק
Ruby2-2הסימן עוקב אחר המחלק (מודולו אמיתי)
מתמטיקה (הגדרה)21 (או לא מוגדר)תמיד לא שלילי עבור מחלק חיובי

במתמטיקה, מודולו תמיד מחזיר תוצאה לא שלילית: -7 מודולו 3 = 2 (מכיוון ש-7 = -3×3 + 2, ו-0 ≤ 2 < 3). מחשבון זה משתמש בהגדרה המתמטית.

הדרך הבטוחה להבטיח תוצאה לא שלילית בכל שפה: ((a % b) + b) % b. זה מטפל נכון בקלטים שליליים ומשמש באופן פנימי על ידי המחשבון שלנו. דפוס זה חיוני בעת שימוש במודולו לאינדקס מערך או חישובים של יום לוח שנה שבהם תוצאות שליליות יגרמו לשגיאות.

מקרי קצה שכדאי לזכור: (1) כל מספר מודולו 1 = 0 — חלוקה ב-1 לא משאירה שארית. (2) כל מספר מודולו עצמו = 0. (3) 0 מודולו כל מספר לא אפס = 0. (4) חלוקה (ומודולו) באפס אינה מוגדרת — תמיד יש לוודא את המחלק לפני חישוב המודולו. המחשבון שלנו מציג הודעת שגיאה ברורה עבור מודולו באפס.

מודולו ובדיקות חלוקה

אחת השימושים המעשיים ביותר של מודולו היא בדיקת חלוקה מבלי לבצע חלוקה מלאה. מספר a ניתן לחלוקה ב-b אם ורק אם a מודולו b = 0. זה מאפשר בדיקות חלוקה מהירות:

חלוקה לפיבדיקהדוגמה
2n מודולו 2 = 0 (ספרה אחרונה זוגית)128 מודולו 2 = 0 ✓
3סכום הספרות מודולו 3 = 0123: 1+2+3=6, 6 מודולו 3 = 0 ✓
4שתי הספרות האחרונות מודולו 4 = 0312: 12 מודולו 4 = 0 ✓
5הספרה האחרונה היא 0 או 5735 מודולו 5 = 0 ✓
9סכום הספרות מודולו 9 = 0369: 3+6+9=18, 18 מודולו 9 = 0 ✓
10n מודולו 10 = 0 (הספרה האחרונה היא 0)500 מודולו 10 = 0 ✓

כללי החלוקה האלה הם קיצורים שנובעים מתכונות חשבון מודולרי. כללי סכום הספרות עבור 3 ו-9 עובדים מכיוון ש-10 ≡ 1 (מודולו 3) ו-10 ≡ 1 (מודולו 9), כלומר הערך המיקומי של כל ספרה אינו רלוונטי לחלוקה ב-3 או 9. אלה נלמדים בבית הספר היסודי ללא הקשר של חשבון מודולרי, אך המנגנון הבסיסי הוא מודולו.

חזקה מודולרית: חזקה מהירה מודולו

חישוב a^b מודולו n ישירות על ידי חישוב תחילה של a^b, ולאחר מכן לקיחת מודולו n, אינו מעשי עבור מעריכים גדולים — a^100 יכול להכיל אלפי ספרות. חזקה מודולרית משתמשת בזהות (a×b) מודולו n = ((a מודולו n) × (b מודולו n)) מודולו n כדי לשמור על תוצאות ביניים קטנות.

האלגוריתם המהיר משתמש בריבוץ חוזר (חזקה בינארית):

זה מפחית את מספר הכפלות מ-b ל-O(log₂ b). עבור b = מעריכי RSA של 2048 סיביות (~10^600), זה ההבדל בין טריליוני כפלות לרק ~2000. ללא אופטימיזציה זו, הצפנת RSA הייתה בלתי מעשית לחלוטין.

שאלות נפוצות

מה זה 15 מודולו 4?

15 מודולו 4 = 3. מכיוון ש-15 = 3×4 + 3, השארית היא 3. אימות: 3×4 = 12, ו-15 − 12 = 3. ✓

מה המשמעות של מודולו 0?

מודולו באפס אינו מוגדר, בדיוק כמו חלוקה באפס. לא ניתן לחשב a מודולו 0. המחשבון שלנו מחזיר הודעת שגיאה במקרה זה. כל פעולה מבוססת חלוקה דורשת מחלק שאינו אפס.

כיצד מודולו קשור לחלוקה?

מספר a ניתן לחלוקה ב-b אם ורק אם a מודולו b = 0. לדוגמה, 24 מודולו 6 = 0, כך ש-24 ניתן לחלוקה ב-6. 25 מודולו 6 = 1, כך ש-25 אינו ניתן לחלוקה ב-6. זה הופך את המודולו לכלי הבסיסי לבדיקת חלוקה במדעי המחשב.

מה ההבדל בין מודולו לשארית?

עבור מספרים חיוביים, מודולו ושארית זהים. עבור מספרים שליליים, הם שונים: המודולו המתמטי תמיד מחזיר תוצאה לא שלילית (הסימן עוקב אחר המחלק), בעוד השארית לוקחת את הסימן של המחולק. לדוגמה, -7 מודולו 3 = 2 (מתמטיקה), אבל -7 שארית 3 = -1 (כמו ב-C, Java, JavaScript).

מה זה 10 מודולו 3?

10 מודולו 3 = 1. מכיוון ש-10 = 3×3 + 1, השארית היא 1. ניתן לאמת: 3×3 = 9, ו-10 − 9 = 1. זה אומר ש-10 משאיר שארית של 1 כאשר מחלקים ב-3, כך ש-10 אינו ניתן לחלוקה ב-3.

מה זה 0 מודולו 5?

0 מודולו 5 = 0. אפס מחולק בכל מספר שאינו אפס נותן מנה 0 ושארית 0. באופן כללי, 0 מודולו n = 0 עבור כל n ≠ 0. זה עקבי עם ההגדרה: 0 = 0×5 + 0.

כיצד משתמשים במודולו בתכנות?

שימושים נפוצים בתכנות כוללים: בדיקת זוגי/אי-זוגי (n%2==0), עטיפת אינדקסים של מערך (index%length), הטמעת מאגרי טבעת, חלוקת פריטים לדליים בטבלאות גיבוב (hash%size), סיבוב מצבים במכונת מצבים, והבטחת אירועים תקופתיים שנורה בכל איטרציה n (counter%n==0).

מהי אריתמטיקת שעון?

אריתמטיקת שעון היא אריתמטיקה מודולרית יומיומית. שעון של 12 שעות משתמש במודולו 12: 11 בלילה + 3 שעות = (11+3) מודולו 12 = 2 בלילה. התנהגות זו של עטיפה היא בדיוק אריתמטיקה מודולרית. באופן דומה, ימי השבוע משתמשים במודולו 7, והזמן הצבאי משתמש במודולו 24 לשעות.

מדוע מודולו חשוב בקריפטוגרפיה?

אריתמטיקה מודולרית מאפשרת פונקציות חד-כיווניות. חישוב g^a מודולו p (בהינתן g, a, p) הוא מהיר, אבל מציאת a בהינתן g^a מודולו p ו-p (בעיית הלוגריתם הדיסקרטי) היא בלתי אפשרית מבחינה חישובית עבור מספרים ראשוניים גדולים. אסימטריה זו עומדת בבסיס חילופי מפתחות Diffie-Hellman, RSA, ורוב הקריפטוגרפיה של מפתח ציבורי המגנה על תקשורת באינטרנט.

מה התוצאה של כל מספר מודולו 1?

כל מספר שלם מודולו 1 = 0. חלוקה ב-1 תמיד לא משאירה שארית — כל מספר שלם ניתן לחלוקה בצורה מושלמת על ידי 1. זה עקבי מבחינה מתמטית: a = a×1 + 0, כך שהשארית היא תמיד 0. מקרה קצה זה חשוב לטיפול ביישומי אריתמטיקה מודולרית.

מודולו בחיי היומיום: דוגמאות מעשיות

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

תזמון וחזרה: אם אירוע מתרחש כל 7 ימים והיום הוא יום שלישי (יום 2, אינדקס אפס מיום ראשון=0), אז 30 יום מהיום הוא (2+30) mod 7 = 32 mod 7 = 4, שהוא יום חמישי. חישוב ישיר זה מהיר יותר מספירת שבועות וימים בנפרד. באופן דומה, אם מנוי מתחדש ב-28 לכל חודש וכרגע זה ה-15, הימים עד לחידוש הם (28−15) mod 31 = 13 ימים.

ספרות בדיקה דיגיטליות: תקן ברקוד ISBN-13 משתמש במודולו 10. הספרה האחרונה של כל ISBN-13 נבחרת כך שהסכום המשוקלל של כל 13 הספרות מתחלק ב-10. אם אתה מקליד ספרה אחת בטעות בעת הזנת ISBN של ספר, הבדיקה תיכשל (mod 10 ≠ 0) ושגיאה תסומן. מספרי כרטיסי אשראי משתמשים באלגוריתם Luhn - בדיקת mod-10 - לאותו מטרה. תקן ISBN-10 משתמש ב-mod 11, ומאפשר זיהוי של החלפות בודדות.

זיכרון מחשב וכתובות: RAM ממוען בדרך כלל בחזקות של 2 (1024, 2048, 4096 בתים לדף). כאשר תוכנית ניגשת לזיכרון, מערכת ההפעלה משתמשת במודולו כדי לחשב באיזה דף זיכרון נמצאת כתובת: מספר_דף = כתובת mod גודל_דף. בחירת שורת מטמון בזכרונות מטמון של CPU משתמשת במודולו באופן דומה. עטיפת חיץ במעגל בעיבוד אודיו, תור חבילות רשת והזרמת וידאו כולם משתמשים במתמטיקה של חיץ מעגלי: עמדת_כתיבה = (עמדת_כתיבה + 1) % גודל_חיץ.

דפוסי אמנות ומוזיקה: דפוסי קצב בתורת המוזיקה מנותחים באמצעות חשבון מודולרי. חתימת זמן של 4/4 כוללת פעימות 0, 1, 2, 3 שחוזרות - מחזור mod-4. פוליריתמים מתרחשים כאשר שני מקצבים עצמאיים עם תקופות m ו-n מתנגנים בו זמנית; הם מסתנכרנים כל lcm(m,n) פעימות. דפוסים חזותיים כמו ריצוף אריחים חוזרים עם תקופות מודולריות בשתי ממדים.

חישובים גאוגרפיים ואזורי זמן: קיזוזי UTC נעים בין -12 ל+14. המרה בין אזורי זמן: בהינתן זמן T ב-UTC, זמן מקומי = (T + קיזוז) mod 24. הערך המתקבל עשוי להיראות לא אינטואיטיבי (למשל, 23 + 5 = 28, mod 24 = 4, כלומר 4:00 בבוקר למחרת), אבל פעולת המודולו מטפלת בגבול חצות בצורה נכונה. חציית קו התאריך הבינלאומי משתמשת ב-mod 24 בשילוב עם חישובים של יום בשבוע באמצעות mod 7.

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