फ़र्मेट की गुणनखंडन विधि: Difference between revisions

From Vigyanwiki
(Created page with "{{Refimprove|date=February 2022}} फ़र्मेट की गुणनखंडन विधि, जिसका नाम [[पियरे डी फ़र्मेट]...")
 
No edit summary
Line 1: Line 1:
{{Refimprove|date=February 2022}}
फ़र्मेट की गुणनखंडन विधि, जिसका नाम [[पियरे डी फ़र्मेट]] के नाम पर रखा गया है, दो वर्गों के अंतर के रूप में एक सम और विषम संख्या [[पूर्णांक]] के प्रतिनिधित्व पर आधारित है:
फ़र्मेट की गुणनखंडन विधि, जिसका नाम [[पियरे डी फ़र्मेट]] के नाम पर रखा गया है, दो वर्गों के अंतर के रूप में एक सम और विषम संख्या [[पूर्णांक]] के प्रतिनिधित्व पर आधारित है:
:<math>N = a^2 - b^2.</math>
:<math>N = a^2 - b^2.</math>
Line 17: Line 16:
         b2 ← a*a - N
         b2 ← a*a - N
       // समकक्ष:
       // समकक्ष:
       // बी2 ← बी2 + 2*ए + 1''
       // बी2 ← बी2 + 2*ए + 1
       // ए ← ए + 1
       // ए ← ए + 1
     एक वापसी - {{Not a typo|sqrt(b2)}} //या एक + {{Not a typo|sqrt(b2)}}
     एक वापसी - {{Not a typo|sqrt(b2)}} //या एक + {{Not a typo|sqrt(b2)}}
Line 42: Line 41:
के लिए <math>N = cd</math>, मान लीजिए कि c सबसे बड़ा उपमूल कारक है। <math>a = (c+d)/2</math>, इसलिए चरणों की संख्या लगभग है <math>(c + d)/2 - \sqrt N = (\sqrt d - \sqrt c)^2 / 2 = (\sqrt N - c)^2 / 2c</math>.
के लिए <math>N = cd</math>, मान लीजिए कि c सबसे बड़ा उपमूल कारक है। <math>a = (c+d)/2</math>, इसलिए चरणों की संख्या लगभग है <math>(c + d)/2 - \sqrt N = (\sqrt d - \sqrt c)^2 / 2 = (\sqrt N - c)^2 / 2c</math>.


यदि N अभाज्य है (तो वह <math>c = 1</math>), हमें चाहिए <math>O(N)</math> कदम। यह आदिमता सिद्ध करने का एक बुरा तरीका है। लेकिन यदि N का कोई गुणनखंड इसके वर्गमूल के करीब है, तो विधि तुरंत काम करती है। अधिक सटीक रूप से, यदि c से कम अंतर है <math>{\left(4N\right)}^{1/4}</math> से <math>\sqrt N</math>, विधि को केवल एक चरण की आवश्यकता है; यह N के आकार से स्वतंत्र है।{{Citation needed|date=January 2015}}
यदि N अभाज्य है (तो वह <math>c = 1</math>), हमें चाहिए <math>O(N)</math> कदम। यह आदिमता सिद्ध करने का एक बुरा तरीका है। लेकिन यदि N का कोई गुणनखंड इसके वर्गमूल के करीब है, तो विधि तुरंत काम करती है। अधिक सटीक रूप से, यदि c से कम अंतर है <math>{\left(4N\right)}^{1/4}</math> से <math>\sqrt N</math>, विधि को केवल एक चरण की आवश्यकता है; यह N के आकार से स्वतंत्र है।


==फर्मेट और परीक्षण प्रभाग==
==फर्मेट और परीक्षण प्रभाग==
Line 82: Line 81:
|}
|}


 
== चलनी में सुधार ==
==चलनी में सुधार==
 
के लिए तालिका पर विचार करते समय <math>N=2345678917</math>, कोई तुरंत बता सकता है कि इनमें से कोई भी मान नहीं है <math>b^2</math> वर्ग हैं:
के लिए तालिका पर विचार करते समय <math>N=2345678917</math>, कोई तुरंत बता सकता है कि इनमें से कोई भी मान नहीं है <math>b^2</math> वर्ग हैं:


Line 139: Line 136:
आम तौर पर, यदि अनुपात ज्ञात नहीं है, तो विभिन्न <math>u/v</math> मूल्यों की कोशिश की जा सकती है, और प्रत्येक परिणामी एनयूवी को कारक बनाने का प्रयास करें। आर. लेहमैन ने ऐसा करने के लिए एक व्यवस्थित तरीका तैयार किया, ताकि फ़र्मेट का प्लस ट्रायल डिवीजन एन को कारक बना सके <math>O(N^{1/3})</math> समय।<ref>{{cite journal |last=Lehman |first=R. Sherman |year=1974 |title=बड़े पूर्णांकों का गुणनखंडन|journal=[[Mathematics of Computation]] |doi=10.2307/2005940 |doi-access=free |jstor=2005940 |volume=28 |issue=126 |pages=637–646 |url=https://www.ams.org/journals/mcom/1974-28-126/S0025-5718-1974-0340163-2/S0025-5718-1974-0340163-2.pdf}}</ref>
आम तौर पर, यदि अनुपात ज्ञात नहीं है, तो विभिन्न <math>u/v</math> मूल्यों की कोशिश की जा सकती है, और प्रत्येक परिणामी एनयूवी को कारक बनाने का प्रयास करें। आर. लेहमैन ने ऐसा करने के लिए एक व्यवस्थित तरीका तैयार किया, ताकि फ़र्मेट का प्लस ट्रायल डिवीजन एन को कारक बना सके <math>O(N^{1/3})</math> समय।<ref>{{cite journal |last=Lehman |first=R. Sherman |year=1974 |title=बड़े पूर्णांकों का गुणनखंडन|journal=[[Mathematics of Computation]] |doi=10.2307/2005940 |doi-access=free |jstor=2005940 |volume=28 |issue=126 |pages=637–646 |url=https://www.ams.org/journals/mcom/1974-28-126/S0025-5718-1974-0340163-2/S0025-5718-1974-0340163-2.pdf}}</ref>


 
== अन्य सुधार ==
==अन्य सुधार==
फ़र्मेट की गुणनखंडन विधि के मौलिक विचार [[द्विघात छलनी]] और सामान्य संख्या क्षेत्र चलनी के आधार हैं, जो बड़े [[सेमीप्राइम्स]] के गुणनखंडन के लिए सबसे प्रसिद्ध एल्गोरिदम हैं, जो सबसे खराब स्थिति वाले हैं। फ़र्मेट की गुणनखंडन विधि की तुलना में द्विघात छलनी द्वारा किया जाने वाला प्राथमिक सुधार यह है कि अनुक्रम में केवल एक वर्ग खोजने के बजाय <math>a^2 - n</math>, यह इस अनुक्रम के तत्वों का एक उपसमूह ढूंढता है जिसका उत्पाद एक वर्ग है, और यह इसे अत्यधिक कुशल तरीके से करता है। अंतिम परिणाम वही है: वर्ग मॉड n का अंतर, जो कि यदि गैर-तुच्छ है, तो कारक n के लिए उपयोग किया जा सकता है।
फ़र्मेट की गुणनखंडन विधि के मौलिक विचार [[द्विघात छलनी]] और सामान्य संख्या क्षेत्र चलनी के आधार हैं, जो बड़े [[सेमीप्राइम्स]] के गुणनखंडन के लिए सबसे प्रसिद्ध एल्गोरिदम हैं, जो सबसे खराब स्थिति वाले हैं। फ़र्मेट की गुणनखंडन विधि की तुलना में द्विघात छलनी द्वारा किया जाने वाला प्राथमिक सुधार यह है कि अनुक्रम में केवल एक वर्ग खोजने के बजाय <math>a^2 - n</math>, यह इस अनुक्रम के तत्वों का एक उपसमूह ढूंढता है जिसका उत्पाद एक वर्ग है, और यह इसे अत्यधिक कुशल तरीके से करता है। अंतिम परिणाम वही है: वर्ग मॉड n का अंतर, जो कि यदि गैर-तुच्छ है, तो कारक n के लिए उपयोग किया जा सकता है।



Revision as of 23:59, 22 July 2023

फ़र्मेट की गुणनखंडन विधि, जिसका नाम पियरे डी फ़र्मेट के नाम पर रखा गया है, दो वर्गों के अंतर के रूप में एक सम और विषम संख्या पूर्णांक के प्रतिनिधित्व पर आधारित है:

वह अंतर बीजगणितीय रूप से गुणनखंडनीय है ; यदि कोई भी कारक एक के बराबर नहीं है, तो यह N का उचित गुणनखंड है।

प्रत्येक विषम संख्या का एक ऐसा प्रतिनिधित्व होता है। वास्तव में, यदि तो, यह N का एक गुणनखंड है

चूँकि N विषम है, तो c और d भी विषम हैं, इसलिए वे आधे पूर्णांक हैं। (चार का गुणज भी वर्गों का अंतर है: मान लीजिए कि c और d सम हैं।)

अपने सरलतम रूप में, फ़र्मेट की विधि परीक्षण प्रभाग (सबसे खराब स्थिति) से भी धीमी हो सकती है। बहरहाल, परीक्षण प्रभाग और फ़र्मेट का संयोजन किसी की तुलना में अधिक प्रभावी है।

मूल विधि

यह आशा करते हुए कोई व्यक्ति a के विभिन्न मूल्यों को आज़माता है , एक वर्ग। फॉर्म फ़ैक्टर(AND): // N विषम a ← होना चाहिए ceiling(sqrt(N))

    b2 ← a*a - N
    तब तक दोहराएँ जब तक b2 एक वर्ग न हो जाए:
        ए ← ए + 1
        b2 ← a*a - N
     // समकक्ष:
     // बी2 ← बी2 + 2*ए + 1
     // ए ← ए + 1
    एक वापसी - sqrt(b2) //या एक + sqrt(b2)

उदाहरण के लिए, कारक के लिए , a के लिए पहला प्रयास का वर्गमूल है 5959 को अगले पूर्णांक तक पूर्णांकित किया गया, जो है 78. तब, . चूँकि 125 एक वर्ग नहीं है, इसलिए a का मान 1 बढ़ाकर दूसरा प्रयास किया जाता है। दूसरा प्रयास भी विफल हो जाता है, क्योंकि 282 फिर से एक वर्ग नहीं है।

Try: 1 2 3
a 78 79 80
b2 125 282 441
b 11.18 16.79 21

तीसरी कोशिश से 441 का पूर्ण वर्ग बनता है। तो, , , और के कारक 5959 हैं और .

मान लीजिए N के दो से अधिक अभाज्य गुणनखंड हैं। वह प्रक्रिया सबसे पहले a और b के न्यूनतम मानों के साथ गुणनखंड ढूंढती है। वह है, सबसे छोटा कारक है ≥ N का वर्गमूल, इत्यादि सबसे बड़ा कारक ≤ रूट-एन है। यदि प्रक्रिया मिल जाती है , इससे पता चलता है कि N अभाज्य है।

के लिए , मान लीजिए कि c सबसे बड़ा उपमूल कारक है। , इसलिए चरणों की संख्या लगभग है .

यदि N अभाज्य है (तो वह ), हमें चाहिए कदम। यह आदिमता सिद्ध करने का एक बुरा तरीका है। लेकिन यदि N का कोई गुणनखंड इसके वर्गमूल के करीब है, तो विधि तुरंत काम करती है। अधिक सटीक रूप से, यदि c से कम अंतर है से , विधि को केवल एक चरण की आवश्यकता है; यह N के आकार से स्वतंत्र है।

फर्मेट और परीक्षण प्रभाग

अभाज्य संख्या का गुणनखंड करने का प्रयास करने पर विचार करें N = 2345678917, लेकिन बी और की भी गणना करें ab लगातार। से ऊपर जा रहे हैं , हम सारणीबद्ध कर सकते हैं:

a 48,433 48,434 48,435 48,436
b2 76,572 173,439 270,308 367,179
b 276.7 416.5 519.9 605.9
ab 48,156.3 48,017.5 47,915.1 47,830.1

व्यवहार में, कोई उस अंतिम पंक्ति से तब तक परेशान नहीं होगा जब तक कि b एक पूर्णांक न हो। लेकिन ध्यान दें कि यदि N के पास उपरोक्त उपमूल कारक है , फ़र्मेट की विधि ने इसे पहले ही ढूंढ लिया होगा।

परीक्षण प्रभाग सामान्यतः 48,432 तक प्रयास करेगा; लेकिन केवल चार फ़र्मेट चरणों के बाद, हमें एक कारक खोजने या प्रारंभिकता साबित करने के लिए केवल 47830 तक विभाजित करने की आवश्यकता है।

यह सब एक संयुक्त फैक्टरिंग विधि का सुझाव देता है। कुछ बाध्य चुनें ; के बीच के कारकों के लिए फ़र्मेट विधि का उपयोग करें और . यह ट्रायल डिवीजन के लिए एक बाध्यता देता है जो कि है . उपरोक्त उदाहरण में, के साथ परीक्षण प्रभाग की सीमा 47830 है। एक उचित विकल्प हो सकता है 28937 का बाउंड दे रहा हूँ।

इस संबंध में, फ़र्मेट की विधि कम रिटर्न देती है। इस बिंदु से पहले कोई निश्चित रूप से रुक जाएगा:

a 60,001 60,002
b2 1,254,441,084 1,254,561,087
b 35,418.1 35,419.8
ab 24,582.9 24,582.2

चलनी में सुधार

के लिए तालिका पर विचार करते समय , कोई तुरंत बता सकता है कि इनमें से कोई भी मान नहीं है वर्ग हैं:

a 48,433 48,434 48,435 48,436
b2 76,572 173,439 270,308 367,179
b 276.7 416.5 519.9 605.9

के सभी वर्गमूलों की गणना करना आवश्यक नहीं है , और न ही इसके लिए सभी मानों की जाँच करें a. वर्ग हमेशा 0, 1, 4, 5, 9, 16 मॉड्यूलर अंकगणित 20 के अनुरूप होते हैं। प्रत्येक वृद्धि के साथ मान दोहराए जाते हैं a 10 से। इस उदाहरण में, एन 17 मॉड 20 है, इसलिए 17 मॉड 20 घटाएं (या 3 जोड़ें), इन मानों के लिए 3, 4, 7, 8, 12, और 19 मॉड्यूल 20 उत्पन्न करता है। यह स्पष्ट है कि इस सूची में से केवल 4 ही एक वर्ग हो सकते हैं। इस प्रकार, 1 मॉड 20 होना चाहिए, जिसका मतलब है a 1, 9, 11 या 19 मॉड 20 है; यह एक उत्पादन करेगा जो 4 मॉड 20 में समाप्त होता है और, यदि वर्गाकार है, b 2 या 8 मॉड 10 में समाप्त हो जाएगा।

इसे किसी भी मापांक के साथ निष्पादित किया जा सकता है। उसी का उपयोग कर रहे हैं ,

modulo 16: Squares are 0, 1, 4, or 9
N mod 16 is 5
so can only be 9
and a must be 3 or 5 or 11 or 13 modulo 16
modulo 9: Squares are 0, 1, 4, or 7
N mod 9 is 7
so can only be 7
and a must be 4 or 5 modulo 9

कोई आम तौर पर प्रत्येक मापांक के लिए एक अलग अभाज्य की शक्ति चुनता है।

ए-मानों (प्रारंभ, अंत और चरण) और एक मापांक के अनुक्रम को देखते हुए, कोई इस प्रकार आगे बढ़ सकता है:

FermatSieve(N, प्रारंभ करें, और, रोकें, मापांक) a ← प्रारंभ करें मापांक समय: b2 ← a*a - N यदि b2 एक वर्ग है, मापांक मापांक: FermatSieve(N, ए, एएंड, एस्टेप * मॉड्यूलस, नेक्स्ट मॉड्यूलस)

        अगर अंत
        ए ← ए + एस्टेप
    एंडडो

लेकिन रिकर्सन (कंप्यूटर विज्ञान) को तब रोक दिया जाता है जब कुछ -मान शेष रह जाते हैं; तभी (aend-astart)/astep छोटा है। इसके अलावा, क्योंकि a का चरण-आकार स्थिर है, कोई भी जोड़ के साथ क्रमिक b2 की गणना कर सकता है।

गुणक सुधार

फ़र्मेट की विधि तब सबसे अच्छा काम करती है जब कोई कारक N के वर्गमूल के निकट हो।

यदि दो कारकों का अनुमानित अनुपात () ज्ञात है, तो एक परिमेय संख्या उस मूल्य के निकट चुना जा सकता है। , और नुव पर लागू फ़र्मेट की विधि, कारकों का पता लगाएगी और जल्दी से। तब और . (जब तक कि c तुम्हें विभाजित न करे या d, v को विभाजित न करे।)

आम तौर पर, यदि अनुपात ज्ञात नहीं है, तो विभिन्न मूल्यों की कोशिश की जा सकती है, और प्रत्येक परिणामी एनयूवी को कारक बनाने का प्रयास करें। आर. लेहमैन ने ऐसा करने के लिए एक व्यवस्थित तरीका तैयार किया, ताकि फ़र्मेट का प्लस ट्रायल डिवीजन एन को कारक बना सके समय।[1]

अन्य सुधार

फ़र्मेट की गुणनखंडन विधि के मौलिक विचार द्विघात छलनी और सामान्य संख्या क्षेत्र चलनी के आधार हैं, जो बड़े सेमीप्राइम्स के गुणनखंडन के लिए सबसे प्रसिद्ध एल्गोरिदम हैं, जो सबसे खराब स्थिति वाले हैं। फ़र्मेट की गुणनखंडन विधि की तुलना में द्विघात छलनी द्वारा किया जाने वाला प्राथमिक सुधार यह है कि अनुक्रम में केवल एक वर्ग खोजने के बजाय , यह इस अनुक्रम के तत्वों का एक उपसमूह ढूंढता है जिसका उत्पाद एक वर्ग है, और यह इसे अत्यधिक कुशल तरीके से करता है। अंतिम परिणाम वही है: वर्ग मॉड n का अंतर, जो कि यदि गैर-तुच्छ है, तो कारक n के लिए उपयोग किया जा सकता है।

यह भी देखें

टिप्पणियाँ

  1. Lehman, R. Sherman (1974). "बड़े पूर्णांकों का गुणनखंडन" (PDF). Mathematics of Computation. 28 (126): 637–646. doi:10.2307/2005940. JSTOR 2005940.


संदर्भ


बाहरी संबंध