מבחן לוקאס-להמר

מתוך המכלול, האנציקלופדיה היהודית
קפיצה לניווט קפיצה לחיפוש

בתורת המספרים, מבחן לוקאס-להמר הוא מבחן ראשוניות – העשוי לספק הוכחה מהירה לכך שמספר נתון n הוא ראשוני. המבחן הוצע על ידי המתמטיקאי הצרפתי אדואר לוקאס בשנת מותו, 1891, ושופר בשנות ה-30 של המאה ה-20 על ידי האמריקאי ד.ה. להמר. מבחן אחר בעל שם דומה הוא מבחן לוקאס-להמר למספרי מרסן, המותאם במיוחד לבדיקת מספרי מרסן.

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

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

חסרונו הגדול של המבחן הוא שנדרשת ידיעת הפירוק לגורמים של n-1. בנוסף, הבדיקה דורשת עֵד, מספר שיקרא כאן a. כל עד עשוי להוכיח ש- n ראשוני, אבל אם עד מסוים נכשל, לא ניתן להסיק מכך ש- n אינו ראשוני. ב-2004 התברר שאין צורך לבדוק עדים הגדולים מ- הפענוח נכשל (שגיאת המרה. השרת ("https://wikimedia.org/api/rest_") השיב: "Cannot get mml. Server problem."): {\displaystyle \ (\log(n))^{6}} ; אם כל העדים עד מספר זה נכשלו, המספר אינו ראשוני. מתוצאה זו נובע שהוכחת ראשוניות של n היא בעיה בעלת סיבוכיות פולי-לוגריתמית.

תיאור המבחן

משפט. אם לכל גורם ראשוני q של n-1 קיים מספר a המקיים ו- הפענוח נכשל (שגיאת המרה. השרת ("https://wikimedia.org/api/rest_") השיב: "Cannot get mml. Server problem."): {\displaystyle \ a^{(n-1)/q}\not \equiv 1{\pmod {n}}} , אז n הוא ראשוני.

הוכחה. אם נגלה כי n-1 מחלק את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \ \varphi(n)} (כאשר הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \ \varphi} פונקציית אוילר), אז נוכל להסיק הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \ \varphi(n)=n-1} (מכיוון שתמיד הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \ \varphi(n)\leq n-1} ), כלומר, אין אף מספר קטן מ- n המחלק אותו, ולכן n ראשוני. נניח, אם כן, ש- q הוא ראשוני שחזקתו הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \ q^r} מחלקת את . לפי ההנחה קיים a שהסדר שלו בחבורת אוילר, הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \ ord(a)} , מחלק את n-1 אבל לא את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \ (n-1)/q} . אם כך, הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \ q^r} מוכרח לחלק את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \ ord(a)} (אחרת הפענוח נכשל (שגיאת המרה. השרת ("https://wikimedia.org/api/rest_") השיב: "Cannot get mml. Server problem."): {\displaystyle \ ord(a)} היה מחלק את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \ (n-1)/q} ), ולכן גם את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \ \varphi(n)} , המתחלק תמיד ב- הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \ ord(a)} (לפי משפט לגראנז'). הוכחנו שכל חזקת ראשוני המחלקת את n-1 מחלקת גם את הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \ \varphi(n)} , כפי שרצינו.

בדרך כלל מספיקה גם הגרסה החלשה הבאה של המבחן: אם קיים מספר a המקיים הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \ a^{n-1}\equiv 1 \pmod{n}} , ו- הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \ a^{(n-1)/q} \not \equiv 1 \pmod{n}} לכל גורם ראשוני q של n-1, אז n הוא ראשוני. כאן מחפשים a שיתאים בבת-אחת לכל הגורמים הראשוניים (למרות שעל-פי המשפט הראשון, תנאי זה אינו הכרחי). ההוכחה של הגרסה החלשה מיידית: אם a מספר המקיים את התנאים, אז הסדר שלו בחבורת אוילר שווה ל- n-1, ולכן (לפי משפט לגראנז') סדר החבורה מתחלק ב-n-1, כפי שרצינו להוכיח.

כדי להוכיח ש-n נתון הוא ראשוני, צריך למצוא a שיקיים את הדרישות. אם n אכן ראשוני, אז יש הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \ \varphi(n-1)} עדים פוטנציאליים אפילו למבחן החלש (כל היוצרים של חבורת אוילר, שהיא ציקלית במקרה זה). מכיוון שהיחס הפענוח נכשל (SVG (אפשר להפעיל MathML בעזרת הרחבת דפדפן): תשובה בלתי־תקינה ("Math extension cannot connect to Restbase.") מהשרת "https://wikimedia.org/api/rest_v1/":): {\displaystyle \ \frac{\varphi(n-1)}{n-1}} קרוב בדרך-כלל ל-1, קל למצוא את העדים והמבחן נחשב למבחן הסתברותי יעיל.

ראו גם