طريقة أويلر للتحليل إلى عوامل

طريقة أويلر للتحليل هي أسلوب لتحليل عدد ما عن طريق كتابته كمجموع مربعين بطريقتين مختلفتين. على سبيل المثال، العدد1000009{\displaystyle 1000009}يمكن كتابتها على النحو التالي10002+32{\displaystyle 1000^{2}+3^{2}}أو كما9722+2352{\displaystyle 972^{2}+235^{2}}وتعطي طريقة أويلر التحليل إلى عوامل1000009=2933413{\displaystyle 1000009=293\cdot 3413}.

يبدو أن فكرة إمكانية الحصول على تحليل عدد فردي موجب من خلال تمثيلين مختلفين قد اقترحها مارين ميرسين لأول مرة . مع ذلك، لم تُستخدم هذه الفكرة على نطاق واسع إلا بعد مئة عام على يد أويلر. وكان أشهر استخداماته لهذه الطريقة، التي تحمل اسمه الآن، هو تحليل العدد إلى عوامله الأولية.1000009{\displaystyle 1000009}، والذي كان يُعتقد سابقًا أنه عدد أولي على الرغم من أنه ليس عددًا أوليًا زائفًا وفقًا لأي اختبار رئيسي للأعداد الأولية.

تُعدّ طريقة أويلر للتحليل إلى عوامل أكثر فعالية من طريقة فيرما للأعداد الصحيحة التي لا تتقارب عواملها، وربما تكون أكثر كفاءة من القسمة التجريبية إذا أمكن إيجاد تمثيلات للأعداد كمجموع مربعين بسهولة نسبية. وتتشابه الطرق المستخدمة لإيجاد هذه التمثيلات مع طرق إيجاد الفروق بين المربعات في طريقة فيرما للتحليل إلى عوامل .

العيوب والقيود

تتمثل أبرز عيوب طريقة أويلر في التحليل إلى عوامل أولية في عدم إمكانية تطبيقها على تحليل أي عدد صحيح يحتوي على أي عامل أولي من الشكل 4k +  3  مرفوعًا لقوة فردية في تحليله إلى عوامل أولية، إذ لا يمكن لمثل هذا العدد أن يكون مجموع مربعين. كذلك، فإن الأعداد المركبة الزوجية والفردية من الشكل 4k +  1  غالبًا ما تكون حاصل ضرب عددين أوليين من الشكل 4k +  3  (مثلًا 3053 = 43 × 71)، ولا يمكن تحليلها باستخدام طريقة أويلر.

أدى هذا التطبيق المحدود إلى جعل طريقة أويلر للتحليل إلى عوامل أولية غير مفضلة في خوارزميات التحليل الحاسوبية ، إذ من غير المرجح أن يعرف أي مستخدم يحاول تحليل عدد صحيح عشوائي ما إذا كان من الممكن تطبيق طريقة أويلر على هذا العدد. ولم تظهر محاولات تطوير طريقة أويلر إلى خوارزميات حاسوبية لاستخدامها على أعداد محددة حيث يُعرف إمكانية تطبيق طريقة أويلر.

الأساس النظري

تنص متطابقة براهمغوبتا -فيوناتشي على أن حاصل ضرب مجموع مربعين يساوي مجموع مربعين. تعتمد طريقة أويلر على هذه النظرية، ولكن يمكن اعتبارها عكسها، بالنظر إلىن=أ2+ب2=ج2+د2{\displaystyle n=a^{2}+b^{2}=c^{2}+d^{2}}نجدن{\displaystyle n}كحاصل ضرب مجموع مربعين.

استنتج أولاً أن

أ2-ج2=د2-ب2{\displaystyle a^{2}-c^{2}=d^{2}-b^{2}}

وقم بتحليل كلا الجانبين للحصول على

(أ-ج)(أ+ج)=(د-ب)(د+ب){\displaystyle (ac)(a+c)=(db)(d+b)}(1)

والآن لنبدأك=القاسم المشترك الأكبر(أ-ج،د-ب){\displaystyle k=\operatorname {gcd} (ac,db)}وح=القاسم المشترك الأكبر(أ+ج،د+ب){\displaystyle h=\operatorname {gcd} (a+c,d+b)}بحيث توجد بعض الثوابتل،م،ل،م{\displaystyle l,m,l',m'}مُرضٍ

  • (أ-ج)=كل{\displaystyle (ac)=kl}،
  • (د-ب)=كم{\displaystyle (db)=km}،

القاسم المشترك الأكبر(ل،م)=1{\displaystyle \operatorname {gcd} (l,m)=1}

  • (أ+ج)=حم{\displaystyle (a+c)=hm'}،
  • (د+ب)=حل{\displaystyle (d+b)=hl'}،

القاسم المشترك الأكبر(ل،م)=1{\displaystyle \operatorname {gcd} (l',m')=1}

وبتعويض هذه القيم في المعادلة (1) نحصل على

كلحم=كمحل{\displaystyle klhm'=kmhl'}

يؤدي حذف العوامل المشتركة إلى

لم=لم{\displaystyle lm'=l'm}

والآن باستخدام حقيقة أن(ل،م){\displaystyle (l,m)}و(ل،م){\displaystyle \left(l',m'\right)}إذا كانت أزواجًا من الأعداد الأولية فيما بينها، فإننا نجد أن

  • ل=ل{\displaystyle l=l'}
  • م=م{\displaystyle m=m'}

لذا

  • (أ-ج)=كل{\displaystyle (ac)=kl}
  • (د-ب)=كم{\displaystyle (db)=km}
  • (أ+ج)=حم{\displaystyle (a+c)=hm}
  • (د+ب)=حل{\displaystyle (d+b)=hl}

نرى الآن أنم=القاسم المشترك الأكبر(أ+ج،د-ب){\displaystyle m=\operatorname {gcd} (a+c,db)}ول=القاسم المشترك الأكبر(أ-ج،د+ب){\displaystyle l=\operatorname {gcd} (ac,d+b)}

بتطبيق متطابقة براهمغوبتا-فيوناتشي نحصل على

(ك2+ح2)(ل2+م2)=(كل+حم)2+(كم-حل)2=((أ-ج)+(أ+ج))2+((د-ب)-(د+ب))2=(2أ)2+(2ب)2=4ن.{\displaystyle \left(k^{2}+h^{2}\right)\left(l^{2}+m^{2}\right)=(kl+hm)^{2}+(km-hl)^{2}={\bigl (}(ac)+(a+c){\bigr )}^{2}+{\bigl (}(db)-(d+b){\bigr )}^{2}=(2a)^{2}+(2b)^{2}=4n.}

بما أن كل عامل هو مجموع مربعين، فلا بد أن يحتوي أحدهما على عددين زوجيين: إما(ك،ح){\displaystyle (k,h)}أو(ل،م){\displaystyle (l,m)}دون الإخلال بعمومية المسألة، افترض أن الزوج(ك،ح){\displaystyle (k,h)}عدد زوجي. يصبح التحليل إلى عوامل عندئذٍ

ن=((ك2)2+(ح2)2)(ل2+م2).{\displaystyle n=\left(\left({\tfrac {k}{2}}\right)^{2}+\left({\tfrac {h}{2}}\right)^{2}\right)\left(l^{2}+m^{2}\right).\,}

مثال عملي

منذ: 1000009=10002+32=9722+2352{\displaystyle \ 1000009=1000^{2}+3^{2}=972^{2}+235^{2}}

لدينا من الصيغة أعلاه:

أ = 1000(أ) أ - ج = 28k = gcd[A,C] = 4
ب = 3(ب) أ + ج = 1972h = gcd[B,D] = 34
ج = 972(ج) د - ب = 232ل = القاسم المشترك الأكبر[أ، د] = 14
د = 235(د) د + ب = 238م = القاسم المشترك الأكبر[ب، ج] = 116

هكذا،

1000009=[(42)2+(342)2][(142)2+(1162)2]{\displaystyle 1000009=\left[\left({\frac {4}{2}}\right)^{2}+\left({\frac {34}{2}}\right)^{2}\right]\cdot \left[\left({\frac {14}{2}}\right)^{2}+\left({\frac {116}{2}}\right)^{2}\right]\,}
=(22+172)(72+582){\displaystyle =\left(2^{2}+17^{2}\right)\cdot \left(7^{2}+58^{2}\right)\,}
=(4+289)(49+3364){\displaystyle =(4+289)\cdot (49+3364)\,}
=2933413{\displaystyle =293\cdot 3413\,}

الشفرة الزائفة

دالة Euler_factorize(int n) -> list[int] إذا كان n عددًا أوليًا، print("العدد غير قابل للتحليل إلى عوامله الأولية") دالة الخروج حلقة تكرارية من a=1 إلى a=ceiling(sqrt(n)) b2 = n - a*a b = floor(sqrt(b2)) إذا كان b*b==b2 كسر الحلقة مع الحفاظ على a و b إذا كان a*a+b*b!=n فإن print("لم يتم العثور على أي تعبير لـ n كمجموع مربعات") دالة الخروج حلقة تكرارية من c=a+1 إلى c=ceiling(sqrt(n)) د2 = ن - ج*ج د = الجزء الصحيح من (جذر(د2)) إذا كان d*d==d2 فإن كسر الحلقة مع الحفاظ على c،d إذا كان c*c+d*d!=n فإن print("فشل في إيجاد تعبير ثانٍ لـ n كمجموع مربعات") دالة الخروج أ = ج أ، ب = ج + أ ج = ب د، د = ب + د ك = GCD(A,C)//2, h = GCD(B,D)//2 l = GCD(A,D)//2, m = GCD(B,C)//2 العامل 1 = k*k + h*h العامل 2 = ل × ل + م × م إرجاع قائمة[ العامل1، العامل2 ]

مراجع