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

From Vigyanwiki
No edit summary
No edit summary
 
(5 intermediate revisions by 4 users not shown)
Line 1: Line 1:
'''फ़र्मेट की गुणनखंडन विधि''', जिसका नाम [[पियरे डी फ़र्मेट]] के नाम पर रखा गया है, दो वर्गों के अंतर के रूप में एक सम और विषम संख्या [[पूर्णांक]] के प्रतिनिधित्व पर आधारित होती है:
'''फ़र्मेट की गुणनखंडन विधि''', जिसका नाम [[पियरे डी फ़र्मेट]] के नाम पर रखा गया था, दो वर्गों के अंतर के रूप में एक सम और विषम संख्या [[पूर्णांक]] के प्रतिनिधित्व पर आधारित होती है:
:<math>N = a^2 - b^2.</math>
:<math>N = a^2 - b^2.</math>
वह अंतर [[बीजगणित|बीजगणितीय]] रूप से गुणनखंडनीय <math>(a+b)(a-b)</math> होता है; यदि कोई भी कारक एक के समान्तर नहीं होता है, तो यह N का उचित गुणनखंड होता है।
वह अंतर [[बीजगणित|बीजगणितीय]] रूप से गुणनखंडनीय <math>(a+b)(a-b)</math> होता है; यदि कोई भी कारक एक के समान्तर नहीं होता है, तो यह N का उचित गुणनखंड होता है।
Line 5: Line 5:
प्रत्येक विषम संख्या का एक ऐसा प्रतिनिधित्व होता है। वास्तव में, यदि <math>N=cd</math> होता है तो, यह N का एक गुणनखंड होता है
प्रत्येक विषम संख्या का एक ऐसा प्रतिनिधित्व होता है। वास्तव में, यदि <math>N=cd</math> होता है तो, यह N का एक गुणनखंड होता है
:<math>N = \left(\frac{c+d}{2}\right)^2 - \left(\frac{c-d}{2}\right)^2</math>
:<math>N = \left(\frac{c+d}{2}\right)^2 - \left(\frac{c-d}{2}\right)^2</math>
चूँकि N विषम होता है, तो c और d भी विषम होता हैं, इसलिए वे आधे पूर्णांक होते हैं। (चार का गुणज भी वर्गों का अंतर होता है: मान लीजिए कि c और d सम हैं।)
चूँकि N विषम होता है, तो c और d भी विषम होते हैं, इसलिए वे आधे पूर्णांक होते हैं। (चार का गुणज भी वर्गों का अंतर होता है: मान लीजिए कि c और d सम होते हैं।)


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


==मूल विधि==
==मूल विधि==
कोई व्यक्ति a के विभिन्न मूल्यों की जांच करता है यह आशा करते हुए <math>a^2-N = b^2</math> होता है, एक वर्ग। फॉर्म फ़ैक्टर(AND): // N विषम a ← होना चाहिए {{Not a typo|ceiling(sqrt(N))}}
कोई व्यक्ति a के विभिन्न मूल्यों की जांच करता है यह आशा करते हुए <math>a^2-N = b^2</math> एक वर्ग होता है। फॉर्म फलन (AND): // N विषम a ← होना चाहिए  
    फॉर्म फ़ैक्टर(N): ''// N विषम होना चाहिए''
 
 
FermatFactor(N): ''// N should be odd''
     a ← सीलिंग(sqrt(N))
     a ← {{Not a typo|ceiling(sqrt(N))}}
     b2 ← a*a - N
     b2 ← a*a - N
    तब तक दोहराएँ जब तक b2 एक वर्ग न हो जाए:
    '''repeat until''' b2 '''is''' a square:
         a ← a + 1
         a ← a + 1
         b2 ← a*a - N  
         b2 ← a*a - N  
       // समान रूप से:  
       // equivalently:  
       // b2 ← b2 + 2*a + 1  
       // b2 ← b2 + 2*a + 1''
       // a ← a + 1
       // a ← a + 1
     '''रीटर्न''' a - sqrt(b2) ''// or a + sqrt(b2)''
     '''return''' a - {{Not a typo|sqrt(b2)}} ''// or a + {{Not a typo|sqrt(b2)}}''
उदाहरण के लिए, कारक के लिए <math>N = 5959</math>, a के लिए पहला प्रयास {{math|5959}} का वर्गमूल है जिसे अगले पूर्णांक तक पूर्णांकित किया जाता है, जिसका मान {{math|78}} होता है। तब, <math>b^2 = 78^2-5959 = 125</math> होता है। चूँकि 125 एक वर्ग नहीं होता है, इसलिए a का मान 1 बढ़ाकर दूसरा प्रयास किया जाता है। दूसरा प्रयास भी विफल हो जाता है, क्योंकि 282 फिर से एक वर्ग नहीं होता है।
उदाहरण के लिए, कारक के लिए <math>N = 5959</math>, a के लिए प्रथम प्रयास {{math|5959}} का वर्गमूल है जिसे अगले पूर्णांक तक पूर्णांकित किया जाता है, जिसका मान {{math|78}} होता है। तब, <math>b^2 = 78^2-5959 = 125</math> होता है। चूँकि 125 एक वर्ग नहीं होता है, इसलिए a का मान 1 बढ़ाकर दूसरा प्रयास किया जाता है। दूसरा प्रयास भी विफल हो जाता है, क्योंकि 282 फिर से एक वर्ग नहीं होता है।
 
{| class="wikitable" style="text-align:right;"
{| class="wikitable" style="text-align:right;"
! Try:
! Try:
Line 43: Line 42:
<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 के आकार से स्वतंत्र होता है।
यदि N अभाज्य होता है (तो वह <math>c = 1</math> होती है), हमें <math>O(N)</math> उपाय की आवश्कता होती है। यह मौलिकता सिद्ध करने की एक अनुपयुक्त विधि होती है। परन्तु यदि N का कोई गुणनखंड इसके वर्गमूल के समीप होता है, तो यह विधि शीघ्रता से कार्य करती है। अधिक स्पष्ट रूप से, यदि c का अंतर <math>{\left(4N\right)}^{1/4}</math> से कम होता है तब <math>\sqrt N</math>, विधि को मात्र एक चरण की आवश्यकता होती है; यह N के आकार से स्वतंत्र होता है।
 
 
 
 
 
 
 
 
 
 
 


==फर्मेट और परीक्षण प्रभाग==
==फर्मेट और परीक्षण प्रभाग==
अभाज्य संख्या {{nowrap|1=''N'' = 2345678917}} का गुणनखंड करने का प्रयास करने पर विचार करें , परन्तु   ''b'' और{{nowrap|''a'' − ''b''}} की भी गणना करें। इस प्रकार से यह <math>\sqrt{N}</math> से ऊपर जाते है, हम इसे निम्न प्रकार सारणीबद्ध कर सकते हैं:
अभाज्य संख्या {{nowrap|1=''N'' = 2345678917}} का गुणनखंड करने का प्रयास करने पर विचार करें , परन्तु ''b'' और{{nowrap|''a'' − ''b''}} की भी गणना करें। इस प्रकार से यह <math>\sqrt{N}</math> से ऊपर जाते है, हम इसे निम्न प्रकार सारणीबद्ध कर सकते हैं:
{| class="wikitable"
{| class="wikitable"
|-
|-
Line 61: Line 71:
| 48,156.3 || 48,017.5 || 47,915.1 || 47,830.1
| 48,156.3 || 48,017.5 || 47,915.1 || 47,830.1
|}
|}
व्यवहार में, कोई उस अंतिम पंक्ति से तब तक उत्तेजित नहीं होता है जब तक कि b एक पूर्णांक न हो जाएँ। परन्तु ध्यान दें कि यदि N के पास उपरोक्त उपमूल कारक <math>a-b=47830.1</math> होता है तो इसका अर्थ यह होता है की फ़र्मेट की विधि ने इसे प्रारम्भ में ही प्राप्त कर लिया होता है।
व्यवहार में, कोई उस अंतिम पंक्ति से तब तक उत्तेजित नहीं होता है जब तक कि b एक पूर्णांक न हो जाएँ। परन्तु ध्यान दें कि यदि N के पास उपरोक्त उपमूल कारक <math>a-b=47830.1</math> होता है तो इसका अर्थ यह होता है की फ़र्मेट की विधि ने इसे प्रारम्भ में ही प्राप्त कर लिया होता है।


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


यह सब एक संयुक्त फैक्टरिंग विधि का सुझाव देता है। कुछ बाध्य <math>c > \sqrt{N}</math> का चयन किया जाता; <math>\sqrt{N}</math> और <math>c</math> के मध्य के कारकों के लिए फ़र्मेट विधि का उपयोग किया जाता है। यह ट्रायल डिवीजन के लिए एक बाध्यता देता है जो कि <math>c - \sqrt{c^2 - N}</math> होता है। उपरोक्त उदाहरण में, <math>c = 48436</math> के साथ परीक्षण प्रभाग की सीमा 47830 होती है। एक उचित विकल्प <math>c = 55000</math> हो सकता है जिसको सीमा 28937 होती है।
यह सब एक संयुक्त फैक्टरिंग विधि का सुझाव देता है। कुछ बाध्य <math>c > \sqrt{N}</math> का चयन किया जाता; <math>\sqrt{N}</math> और <math>c</math> के मध्य के कारकों के लिए फ़र्मेट विधि का उपयोग किया जाता है। यह ट्रायल डिवीजन के लिए एक बाध्यता देता है जो कि <math>c - \sqrt{c^2 - N}</math> होता है। उपरोक्त उदाहरण में, <math>c = 48436</math> के साथ परीक्षण प्रभाग की सीमा 47830 होती है। एक उचित विकल्प <math>c = 55000</math> हो सकता है जिसको सीमा 28937 होती है।


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


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


{| class="wikitable"  style="text-align:right;"
{| class="wikitable"  style="text-align:right;"
Line 97: Line 107:
|  276.7 ||  416.5 ||  519.9 ||  605.9
|  276.7 ||  416.5 ||  519.9 ||  605.9
|}
|}
<math>a^2-N</math> के सभी वर्गमूलों की गणना करना आवश्यक नहीं होता है, और न ही {{mvar|a}} के लिए सभी मानों की जाँच करने आवश्कता होती है । वर्ग सदैव 0, 1, 4, 5, 9, 16 [[मॉड्यूलर अंकगणित]] 20 के अनुरूप होते हैं। प्रत्येक वृद्धि के साथ {{mvar|a}} 10 से मान दोहराए जाते हैं । इस उदाहरण में, N 17 मॉड 20 होता है, इसलिए 17 मॉड 20को घटाया (या 3 जोड़ें) जाता है, <math>a^2-N</math> इन मानों के लिए 3, 4, 7, 8, 12, और 19 मॉड्यूल 20 उत्पन्न करता है। यह स्पष्ट है कि इस सूची में से मात्र 4 ही एक वर्ग हो सकते हैं। इस प्रकार, <math>a^2</math> 1 मॉड 20 होना चाहिए, जिसका अर्थ {{mvar|a}} 1, 9, 11 या 19 मॉड 20 होता है; यह एक <math>b^2</math> का उत्पादन करेगा जो 4 मॉड 20 में समाप्त होता है और, यदि यह वर्गाकार होता है, तो {{mvar|b}}<sup>2</sup> या 8 मॉड 10 में समाप्त हो जाता है।
<math>a^2-N</math> के सभी वर्गमूलों की गणना करना आवश्यक नहीं होता है, और न ही {{mvar|a}} के लिए सभी मानों की जाँच करने आवश्कता होती है। वर्ग सदैव 0, 1, 4, 5, 9, 16 [[मॉड्यूलर अंकगणित]] 20 के अनुरूप होते हैं। प्रत्येक वृद्धि के साथ {{mvar|a}} 10 से मान दोहराए जाते हैं । इस उदाहरण में, N 17 मॉड 20 होता है, इसलिए 17 मॉड 20 को घटाया (या 3 जोड़ें) जाता है, <math>a^2-N</math> इन मानों के लिए 3, 4, 7, 8, 12, और 19 मॉड्यूल 20 उत्पन्न करता है। यह स्पष्ट है कि इस सूची में से मात्र 4 ही एक वर्ग हो सकते हैं। इस प्रकार, <math>a^2</math> 1 मॉड 20 होना चाहिए, जिसका अर्थ {{mvar|a}} 1, 9, 11 या 19 मॉड 20 होता है; यह एक <math>b^2</math> का उत्पादन करेगा जो 4 मॉड 20 में समाप्त होता है और, यदि यह वर्गाकार होता है, तो {{mvar|b}}<sup>2</sup> या 8 मॉड 10 में समाप्त हो जाता है।


इसे किसी भी मापांक के साथ निष्पादित किया जा सकता है। <math>N=2345678917</math> का उपयोग किया जाता हैं ,
इसे किसी भी मापांक के साथ निष्पादित किया जा सकता है। <math>N=2345678917</math> का उपयोग किया जाता हैं ,
{|
{|
|-
|-
|modulo 16:||Squares are ||0, 1, 4, or 9
|मॉड्यूलो 16:||वर्ग इस प्रकार है ||0, 1, 4, or 9
|-
|-
|          ||N mod 16 is||5
|          ||N मॉड 16 है ||5
|-
|-
|          ||so <math>a^2</math> can only be||9
|          ||इसलिए <math>a^2</math> मात्र उल्लेखित संख्या हो सकता है ||9
|-
|-
|          ||and {{mvar|a}} must be||3 or 5 or 11 or 13 modulo 16
|          ||और {{mvar|a}} अवश्य निम्न प्रकार है ||3 or 5 or 11 or 13 मॉड्यूलो 16
|-
|-
|modulo 9: ||Squares are ||0, 1, 4, or 7
|मॉड्यूलो 9: ||वर्ग निम्न प्रकार है ||0, 1, 4, or 7
|-
|-
|          ||N mod 9 is||7
|          ||N मॉड 9 है ||7
|-
|-
|          ||so <math>a^2</math> can only be||7
|          ||इसलिए <math>a^2</math> मात्र उल्लेखित संख्या हो सकता है ||7
|-
|-
|          ||and {{mvar|a}} must be||4 or 5 modulo 9
|          ||और {{mvar|a}} अवश्य निम्न प्रकार है ||4 or 5 मॉड्यूलो 9
|}
|}
कोई सामान्यतः प्रत्येक मापांक के लिए एक अलग अभाज्य की शक्ति का चयन करता है।
कोई सामान्यतः प्रत्येक मापांक के लिए एक अलग अभाज्य की शक्ति का चयन करता है।


a-मानों (प्रारंभ, अंत और चरण) और एक मापांक के अनुक्रम को देखते हुए, कोई इस प्रकार आगे बढ़ सकता है:  
a-मानों (प्रारंभ, अंत और चरण) और एक मापांक के अनुक्रम को देखते हुए, कोई इस प्रकार आगे बढ़ सकता है:  
        फ़र्मेटसीव(N, astart, aend, astep, modulus)
  फ़र्मेटसीव(N, astart, aend, astep, modulus)


    a ← astart
  a ← astart
    '''do''' modulus '''times''':
  '''do''' modulus '''times''':
        b2 ← a*a - N
  b2 ← a*a - N
        '''if''' b2 is a square, modulo modulus:
  '''if''' b2 is a square, मॉड्यूलो modulus:
            फ़र्मेटसीव(N, a, aend, astep * modulus, NextModulus)
  फ़र्मेटसीव(N, a, aend, astep * modulus, NextModulus)
        '''endif'''
  '''endif'''
        a ← a + astep
  a ← a + astep
    '''enddo'''
  '''enddo'''
[[रिकर्सन (कंप्यूटर विज्ञान)]] को तब रोक दिया जाता है जब कुछ ''a''-मान शेष रह जाते हैं; तभी ({{Not a typo|aend-astart}})/{{Not a typo|astep}} छोटा होता है। इसके अतिरिक्त, क्योंकि a का चरण-आकार स्थिर होता है, कोई भी जोड़ के साथ क्रमिक b2 की गणना कर सकता है।
[[रिकर्सन (कंप्यूटर विज्ञान)]] को तब रोक दिया जाता है जब कुछ ''a''-मान शेष रह जाते हैं; तभी ({{Not a typo|aend-astart}})/{{Not a typo|astep}} छोटा होता है। इसके अतिरिक्त, क्योंकि a का चरण-आकार स्थिर होता है, कोई भी जोड़ के साथ क्रमिक b2 की गणना कर सकता है।


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


यदि दो कारकों का अनुमानित अनुपात (<math>d/c</math>) ज्ञात होता है, तो एक परिमेय संख्या <math>v/u</math> उस मूल्य के निकट चुना जा सकता है। <math>Nuv = cv \cdot du</math>, और नुव पर लागू फ़र्मेट की विधि, कारकों <math>cv</math> और <math>du</math> शीग्रता से पता लगाती है। तब <math>\gcd(N,cv)=c</math> और <math>\gcd(N,du)=d</math> ओता है। (जब तक कि c ''u को'' विभाजित न करे या d, v को विभाजित न करे।)
यदि दो कारकों का अनुमानित अनुपात (<math>d/c</math>) ज्ञात होता है, तो एक परिमेय संख्या <math>v/u</math> उस मूल्य के निकट चयन किया जा सकता है। <math>Nuv = cv \cdot du</math>, और नुव पर प्रयुक्त फ़र्मेट की विधि, कारकों <math>cv</math> और <math>du</math> शीग्रता से पता लगाती है। तब <math>\gcd(N,cv)=c</math> और <math>\gcd(N,du)=d</math> होता है। (जब तक कि c ''u को'' विभाजित न करे या d, v को विभाजित न करे।)


सामान्यतः, यदि अनुपात ज्ञात नहीं है, तो विभिन्न <math>u/v</math> मूल्यों के लिए प्रयास की जा सकता है, और प्रत्येक परिणामी एनयूवी को कारक बनाने का प्रयास किया जा सकता है।आर. लेहमैन ने ऐसा करने के लिए एक व्यवस्थित विधि निर्मित की थी, जिससे फ़र्मेट का प्लस ट्रायल डिवीजन <math>O(N^{1/3})</math>समय में N का कारक बन सके।<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>समय में N का कारक निर्मित हो सके।<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 के लिए उपयोग किया जा सकता है।


==यह भी देखें==
==यह भी देखें==
Line 149: Line 159:
*[[कारक प्रमेय]]
*[[कारक प्रमेय]]
*[[फ़ॉइल नियम]]
*[[फ़ॉइल नियम]]
*[[ मोनोइड गुणनखंडन ]]
*[[ मोनोइड गुणनखंडन |मोनोइड गुणनखंडन]]
*पास्कल का त्रिकोण
*पास्कल का त्रिकोण
*[[मुख्य कारक है]]
*[[मुख्य कारक है]]
Line 173: Line 183:


{{number theoretic algorithms}}
{{number theoretic algorithms}}
[[Category: पूर्णांक गुणनखंड एल्गोरिदम]]


[[Category: Machine Translated Page]]
[[Category:Collapse templates]]
[[Category:Created On 18/07/2023]]
[[Category:Created On 18/07/2023]]
[[Category:Machine Translated Page]]
[[Category:Navigational boxes| ]]
[[Category:Navigational boxes without horizontal lists]]
[[Category:Pages with script errors]]
[[Category:Sidebars with styles needing conversion]]
[[Category:Template documentation pages|Documentation/doc]]
[[Category:Templates Translated in Hindi]]
[[Category:Templates Vigyan Ready]]
[[Category:Templates generating microformats]]
[[Category:Templates that are not mobile friendly]]
[[Category:Templates using TemplateData]]
[[Category:Wikipedia metatemplates]]
[[Category:पूर्णांक गुणनखंड एल्गोरिदम]]

Latest revision as of 12:22, 31 July 2023

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

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

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

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

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

मूल विधि

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

FermatFactor(N): // N should be odd
    a ← ceiling(sqrt(N))
    b2 ← a*a - N
    repeat until b2 is a square:
        a ← a + 1
        b2 ← a*a - N 
     // equivalently: 
     // b2 ← b2 + 2*a + 1 
     // a ← a + 1
    return a - sqrt(b2) // or a + 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 का गुणनखंड करने का प्रयास करने पर विचार करें , परन्तु b और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 से मान दोहराए जाते हैं । इस उदाहरण में, N 17 मॉड 20 होता है, इसलिए 17 मॉड 20 को घटाया (या 3 जोड़ें) जाता है, इन मानों के लिए 3, 4, 7, 8, 12, और 19 मॉड्यूल 20 उत्पन्न करता है। यह स्पष्ट है कि इस सूची में से मात्र 4 ही एक वर्ग हो सकते हैं। इस प्रकार, 1 मॉड 20 होना चाहिए, जिसका अर्थ a 1, 9, 11 या 19 मॉड 20 होता है; यह एक का उत्पादन करेगा जो 4 मॉड 20 में समाप्त होता है और, यदि यह वर्गाकार होता है, तो b2 या 8 मॉड 10 में समाप्त हो जाता है।

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

मॉड्यूलो 16: वर्ग इस प्रकार है 0, 1, 4, or 9
N मॉड 16 है 5
इसलिए मात्र उल्लेखित संख्या हो सकता है 9
और a अवश्य निम्न प्रकार है 3 or 5 or 11 or 13 मॉड्यूलो 16
मॉड्यूलो 9: वर्ग निम्न प्रकार है 0, 1, 4, or 7
N मॉड 9 है 7
इसलिए मात्र उल्लेखित संख्या हो सकता है 7
और a अवश्य निम्न प्रकार है 4 or 5 मॉड्यूलो 9

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

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

  फ़र्मेटसीव(N, astart, aend, astep, modulus)
 a ← astart
 do modulus times:
  b2 ← a*a - N
  if b2 is a square, मॉड्यूलो modulus:
  फ़र्मेटसीव(N, a, aend, astep * modulus, NextModulus)
  endif
  a ← a + astep
 enddo

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

गुणक सुधार

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

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

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

अन्य सुधार

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

यह भी देखें

टिप्पणियाँ

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


संदर्भ


बाहरी संबंध