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

בתורת המספרים, מבחן לוקאס-להמר הוא מבחן ראשוניות – העשוי לספק הוכחה מהירה לכך שמספר נתון n {\displaystyle n} הוא ראשוני. המבחן הוצע על ידי המתמטיקאי הצרפתי אדוארד לוקאס בשנת מותו, 1891, ושופר בשנות ה-30 של המאה ה-20 על ידי האמריקאי ד.ה. להמר. מבחן אחר בעל שם דומה הוא מבחן לוקאס-להמר למספרי מרסן, המותאם במיוחד לבדיקת מספרי מרסן. לפי המשפט הקטן של פרמה, אם n {\displaystyle n} מספר ראשוני שאינו מחלק את a, אז a n − 1 ≡ 1 ( mod n ) {\displaystyle a^{n-1}\equiv 1\!\!\!{\pmod {n}}} . בניסוח אחר אפשר לומר שהסדר של a {\displaystyle a} בחבורת אוילר של n {\displaystyle n} מחלק את n − 1 {\displaystyle n-1} . אם השוויון אינו מתקיים, זוהי ראיה מיידית לכך ש- n {\displaystyle n} אינו ראשוני; אבל שוויון אינו מוכיח כי n {\displaystyle n} ראשוני – הוא עלול להיות מספר פסאודו-ראשוני. מבחן לוקאס-להמר מהווה מעין כיוון הפוך למשפט פרמה. אם הסדר של a {\displaystyle a} בחבורת אוילר של n {\displaystyle n} שווה ל- n − 1 {\displaystyle n-1} , אז n {\displaystyle n} מוכרח להיות ראשוני. כל מבחני הראשוניות שפותחו מאוחר יותר הם וריאציות על רעיון זה. חסרונו הגדול של המבחן הוא שנדרשת ידיעת הפירוק לגורמים של n − 1 {\displaystyle n-1} . בנוסף, הבדיקה דורשת עֵד, מספר שיקרא כאן a {\displaystyle a} . כל עד עשוי להוכיח כי n {\displaystyle n} ראשוני, אבל אם עד מסוים נכשל, לא ניתן להסיק מכך כי n {\displaystyle n} אינו ראשוני. ב-2004 התברר שאין צורך לבדוק עדים הגדולים מ- log ⁡ ( n ) 6 {\displaystyle \log(n)^{6}} ; אם כל העדים עד מספר זה נכשלו, המספר אינו ראשוני. מתוצאה זו נובע שהוכחת ראשוניות של n {\displaystyle n} היא בעיה בעלת סיבוכיות פולי-לוגריתמית. משפט: אם לכל גורם ראשוני q {\displaystyle q} של n − 1 {\displaystyle n-1} קיים מספר a {\displaystyle a} המקיים a n − 1 ≡ 1 ( mod n ) , a ( n − 1 ) / q ≢ 1 ( mod n ) {\displaystyle a^{n-1}\equiv 1\!\!\!{\pmod {n}},\,a^{(n-1)/q}\not \equiv 1\!\!\!{\pmod {n}}} , אזי n {\displaystyle n} הוא ראשוני. הוכחה: אם נגלה כי n − 1 {\displaystyle n-1} מחלק את ϕ ( n ) {\displaystyle \phi (n)} (כאשר ϕ {\displaystyle \phi } פונקציית אוילר), אז נוכל להסיק כי ϕ ( n ) = n − 1 {\displaystyle \phi (n)=n-1} (מכיוון שתמיד ϕ ( n ) ≤ n − 1 {\displaystyle \phi (n)\leq n-1} ), כלומר אין אף מספר קטן מ- n {\displaystyle n} המחלק אותו, ולכן n {\displaystyle n} ראשוני. נניח, אם כן, כי q {\displaystyle q} הוא ראשוני שחזקתו q r {\displaystyle q^{r}} מחלקת את n − 1 {\displaystyle n-1} . לפי ההנחה קיים a {\displaystyle a} שהסדר שלו בחבורת אוילר, ord ( a ) {\displaystyle {\text{ord}}(a)} , מחלק את n − 1 {\displaystyle n-1} אבל לא את ( n − 1 ) / q {\displaystyle (n-1)/q} . אם כך, q r {\displaystyle q^{r}} מוכרח לחלק את ord ( a ) {\displaystyle {\text{ord}}(a)} (אחרת ord ( a ) {\displaystyle {\text{ord}}(a)} היה מחלק את ( n − 1 ) / q {\displaystyle (n-1)/q} ), ולכן גם את ϕ ( n ) {\displaystyle \phi (n)} , המתחלק תמיד ב- ord ( a ) {\displaystyle {\text{ord}}(a)} (לפי משפט לגראנז'). הוכחנו שכל חזקת ראשוני המחלקת את n − 1 {\displaystyle n-1} מחלקת גם את ϕ ( n ) {\displaystyle \phi (n)} , כפי שרצינו. בדרך כלל מספיקה גם הגרסה החלשה הבאה של המבחן: אם קיים מספר a {\displaystyle a} המקיים a n − 1 ≡ 1 ( mod n ) , a ( n − 1 ) / q ≢ 1 ( mod n ) {\displaystyle a^{n-1}\equiv 1\!\!\!{\pmod {n}},\,a^{(n-1)/q}\not \equiv 1\!\!\!{\pmod {n}}} לכל גורם ראשוני q {\displaystyle q} של n − 1 {\displaystyle n-1} , אזי n {\displaystyle n} הוא ראשוני. כאן מחפשים a {\displaystyle a} שיתאים בבת-אחת לכל הגורמים הראשוניים (אף כי על-פי המשפט הראשון תנאי זה אינו הכרחי). ההוכחה של הגרסה החלשה מיידית: אם a {\displaystyle a} מספר המקיים את התנאים, אז הסדר שלו בחבורת אוילר שווה ל- n − 1 {\displaystyle n-1} , ולכן (לפי משפט לגראנז') סדר החבורה מתחלק ב- n − 1 {\displaystyle n-1} , כפי שרצינו להוכיח. כדי להוכיח כי n {\displaystyle n} נתון הוא ראשוני, יש למצוא a {\displaystyle a} שיקיים את הדרישות. אם n {\displaystyle n} אכן ראשוני, אז יש ϕ ( n − 1 ) {\displaystyle \phi (n-1)} עדים פוטנציאליים אפילו למבחן החלש (כל היוצרים של חבורת אוילר, שהיא ציקלית במקרה זה). מכיוון שהיחס ϕ ( n − 1 ) n − 1 {\displaystyle {\frac {\phi (n-1)}{n-1}}} קרוב בדרך-כלל ל-1, קל למצוא את העדים והמבחן נחשב למבחן הסתברותי יעיל. מבחן ראשוניות סדר (תורת החבורות)