אלגוריתם אוקלידס – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
קישור פנימי והמרת חלק מהכיתוב המתמטי ל-LaTeX.
שורה 6:
 
==רקע==
המחלק המשותף המקסימלי של מספרים, המסומן {{משמאל לימין|<math>gcd(a,b)}}</math> או בקיצור (a,b), היא פעולה המקבלת שני מספרים טבעיים, ומחזירה את המספר הגדול ביותר ש[[מחלק]] את שניהם.
 
לדוגמה, המחלק המשותף המקסימלי של 36 ו-24 הוא 12, מאחר שהמספר מחלק את שניהם ואין מספר גדול יותר בעל תכונה זאת.
שורה 44:
 
==יעילות==
מבחינת [[סיבוכיות]] [[חישוביות|חישובית]], האלגוריתם [[אלגוריתם יעיל|יעיל]]. מספר הפעולות הנדרשות לביצוע אינו עולה על <math>\ \log_{\varphi}a</math> (<math>\ \varphi</math> הוא [[יחס הזהב]]). על כן הסבוכיותהסיבוכיות שלו היא [[לוגריתם|לוגריתמית]]. ניתן להגיד שמספר הפעולות אינו עולה על פי-5 ממספר ה[[ספרה|ספרות]].
 
המקרה הגרוע ביותר (worst case) הוא כאשר מדובר בשני [[מספרי פיבונאצ'י]] עוקבים; זאת, כיוון שככל שהמנה המתקבלת בפעולות החילוק קטנה יותר, המספר קָטֶן פחות, ויש צורך ביותר פעולות. במספרי פיבונאצ'י כל המנות הן 1, ועל כן התהליך הוא הארוך ביותר. תכונה זו נתגלתה על ידי [[גבריאל לאמה]].
שורה 51:
אחת התכונות החשובות של המחלק המשותף המקסימלי היא שניתן להציג אותו בצורה הבאה: <math>(A,B)=mA+nB</math>, כאשר m,n [[מספר שלם|שלמים]].
 
ניתן לחשב את m,n בעזרת אלגוריתם אוקלידס בעזרת התכונה שאם כל פעם השתמשנו ב-<math>a=c+qb</math>, אז <math>c=a-qb</math>. לפיכך, אם אנחנו יודעים בשלב מסוים איך להציג את שני המספרים <math>a</math> ו-<math>b</math> בצורה <math>mA+nB</math> (ההתחלה פשוטה: <math>n=0</math> ,<math>m=1</math>,n=0 או להפך) ניתן להציב בביטוי <math>c=a-qb</math> ולהתקדם בשלבי האלגוריתם עד להצגה הרצויה.
 
לדוגמה, נמצא בדוגמה לעיל את ההצגה של 10 כ-<math>100n+230m</math>:
*<math>230=0\cdot100+1\cdot230</math>
*<math>100=1\cdot100+0\cdot230</math>
*<math>30=230-2\cdot100=-2\cdot100+1\cdot230</math>
*<math>10=100-3\cdot30=100-3\cdot(-2\cdot100+1\cdot230)=7\cdot100-3\cdot230</math>
לפיכך: <math>n=7, m=-3</math>.
 
מידת סיבוכיות האלגוריתם המורחב היא מאותו סדר גודל של הרגיל, מאחר שאין צורך לבצע איטרציות נוספות אלא רק חישובים בסיסיים.