<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>गणित・क्रिप्टोग्राफी・क्वांटम on kenji.blog</title><link>http://kenji.blog/hi/categories/%E0%A4%97%E0%A4%A3%E0%A4%BF%E0%A4%A4%E0%A4%95%E0%A5%8D%E0%A4%B0%E0%A4%BF%E0%A4%AA%E0%A5%8D%E0%A4%9F%E0%A5%8B%E0%A4%97%E0%A5%8D%E0%A4%B0%E0%A4%BE%E0%A4%AB%E0%A5%80%E0%A4%95%E0%A5%8D%E0%A4%B5%E0%A4%BE%E0%A4%82%E0%A4%9F%E0%A4%AE/</link><description>Recent content in गणित・क्रिप्टोग्राफी・क्वांटम on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>hi</language><copyright>kenjinote</copyright><lastBuildDate>Sat, 05 Sep 2026 22:10:00 +0900</lastBuildDate><atom:link href="http://kenji.blog/hi/categories/%E0%A4%97%E0%A4%A3%E0%A4%BF%E0%A4%A4%E0%A4%95%E0%A5%8D%E0%A4%B0%E0%A4%BF%E0%A4%AA%E0%A5%8D%E0%A4%9F%E0%A5%8B%E0%A4%97%E0%A5%8D%E0%A4%B0%E0%A4%BE%E0%A4%AB%E0%A5%80%E0%A4%95%E0%A5%8D%E0%A4%B5%E0%A4%BE%E0%A4%82%E0%A4%9F%E0%A4%AE/index.xml" rel="self" type="application/rss+xml"/><item><title>【पूर्ण विश्लेषण】 क्वांटम कंप्यूटर क्या है? ~ शून्य से समझें परम गणना सिद्धांत ~</title><link>http://kenji.blog/hi/p/quantum-computer-basics/</link><pubDate>Sat, 05 Sep 2026 22:10:00 +0900</pubDate><guid>http://kenji.blog/hi/p/quantum-computer-basics/</guid><description>&lt;img src="http://kenji.blog/p/quantum-computer-basics/quantum_basics_eyecatch_1788613712487.jpg" alt="Featured image of post 【पूर्ण विश्लेषण】 क्वांटम कंप्यूटर क्या है? ~ शून्य से समझें परम गणना सिद्धांत ~" />&lt;h2 id="परचय-कवटम-कपयटर-दवर-लय-गय-गणन-क-परतमन-बदलव">परिचय: क्वांटम कंप्यूटर द्वारा लाया गया &amp;ldquo;गणना का प्रतिमान बदलाव&amp;rdquo;
&lt;/h2>&lt;p>हाल के वर्षों में, ऐसा कोई दिन नहीं जाता जब हम समाचारों या तकनीकी लेखों में &amp;ldquo;क्वांटम कंप्यूटर&amp;rdquo; शब्द न देखें। साइंस फिक्शन फिल्मों जैसी कहानियाँ जैसे &amp;ldquo;यह उन गणनाओं को कुछ मिनटों में पूरा कर लेगा जिनमें वर्तमान सुपरकंप्यूटरों को हजारों साल लगेंगे&amp;rdquo; या &amp;ldquo;वर्तमान की सभी क्रिप्टोग्राफ़िक तकनीकें टूट सकती हैं&amp;rdquo;, सच के रूप में बताई जा रही हैं। Google, IBM और Microsoft जैसी विशाल IT कंपनियों से लेकर दुनिया भर के विश्वविद्यालयों और स्टार्टअप्स तक, हर कोई इस सपनों की तकनीक को व्यावहारिक बनाने के लिए प्रतिस्पर्धा कर रहा है।&lt;/p>
&lt;p>हालाँकि, जब पूछा जाता है, &amp;ldquo;आख़िर क्वांटम कंप्यूटर क्या है?&amp;rdquo;, तो बहुत कम लोग सटीक उत्तर दे पाते हैं। बहुत से लोगों के मन में &amp;ldquo;एक जादुई डिब्बा जो एक ही समय में सभी संयोजनों की गणना कर सकता है&amp;rdquo; जैसी एक अस्पष्ट छवि होती है, लेकिन तकनीकी रूप से यह सही नहीं है।&lt;/p>
&lt;p>इस लेख में, हम बुनियादी बातों से पूरी तरह से, पेशेवर लेकिन समझने में आसान तरीके से समझाएंगे कि क्वांटम कंप्यूटर मौलिक रूप से शास्त्रीय कंप्यूटरों (हम आमतौर पर उपयोग किए जाने वाले PC या स्मार्टफोन) से कैसे भिन्न हैं, और वे गणना के लिए &amp;ldquo;सुपरपोजिशन (Superposition)&amp;rdquo;, &amp;ldquo;क्वांटम उलझाव (Entanglement)&amp;rdquo; और &amp;ldquo;क्वांटम गेट्स (Quantum gates)&amp;rdquo; जैसी रहस्यमय क्वांटम यांत्रिक घटनाओं का उपयोग कैसे करते हैं। जब तक आप इस लेख को पढ़ना समाप्त करेंगे, तब तक आपको क्वांटम कंप्यूटर की वास्तविक शक्ति और इसकी वर्तमान चुनौतियों को स्पष्ट रूप से समझ लेना चाहिए।&lt;/p>
&lt;hr>
&lt;h2 id="अधयय-1-शसतरय-कपयटर-और-कवटम-कपयटर-क-बच-नरणयक-अतर">अध्याय 1: शास्त्रीय कंप्यूटर और क्वांटम कंप्यूटर के बीच निर्णायक अंतर
&lt;/h2>&lt;p>क्वांटम कंप्यूटर कैसे काम करते हैं, यह समझने के लिए, हमें पहले यह समीक्षा करनी होगी कि हम वर्तमान में जिन &amp;ldquo;शास्त्रीय कंप्यूटरों&amp;rdquo; का उपयोग करते हैं वे कैसे काम करते हैं।&lt;/p>
&lt;h3 id="तलन-तलक-शसतरय-कपयटर-बनम-कवटम-कपयटर">तुलना तालिका: शास्त्रीय कंप्यूटर बनाम क्वांटम कंप्यूटर
&lt;/h3>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>विशेषता&lt;/th>
&lt;th>शास्त्रीय कंप्यूटर&lt;/th>
&lt;th>क्वांटम कंप्यूटर&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>मूल इकाई&lt;/strong>&lt;/td>
&lt;td>बिट (0 या 1)&lt;/td>
&lt;td>क्वांटम बिट (0 और 1 का सुपरपोजिशन)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>स्थिति का प्रतिनिधित्व&lt;/strong>&lt;/td>
&lt;td>नियतात्मक&lt;/td>
&lt;td>संभाव्य (जब तक देखा न जाए तब तक निर्धारित नहीं)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>गणना विधि&lt;/strong>&lt;/td>
&lt;td>अनुक्रमिक प्रसंस्करण (समानांतरीकरण के लिए भौतिक कोर की आवश्यकता है)&lt;/td>
&lt;td>क्वांटम समानांतरवाद (समानांतर में घातीय स्थितियों में हेरफेर)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>इसमें अच्छा है&lt;/strong>&lt;/td>
&lt;td>अंकगणितीय संचालन, दैनिक डेटा प्रसंस्करण&lt;/td>
&lt;td>अभाज्य गुणनखंडन, क्वांटम रसायन गणना&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>त्रुटि सहिष्णुता&lt;/strong>&lt;/td>
&lt;td>बहुत मजबूत&lt;/td>
&lt;td>बहुत कमजोर (क्रायोजेनिक वातावरण और त्रुटि सुधार की आवश्यकता है)&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="शसतरय-कपयटर-क-दनय-0-य-1-क-बट-bit">शास्त्रीय कंप्यूटरों की दुनिया: 0 या 1 का &amp;ldquo;बिट (Bit)&amp;rdquo;
&lt;/h3>&lt;p>एक शास्त्रीय कंप्यूटर सभी सूचनाओं को &amp;ldquo;0&amp;rdquo; या &amp;ldquo;1&amp;rdquo; की स्थिति के रूप में दर्शाता है। इसे &lt;strong>बिट (Bit)&lt;/strong> कहा जाता है। भौतिक रूप से, इसे अर्धचालक चिप पर ट्रांजिस्टर के उच्च (1) या निम्न (0) वोल्टेज द्वारा दर्शाया जाता है।
आपके स्मार्टफोन में उच्च-रिज़ॉल्यूशन वाली तस्वीरें, आपके द्वारा अभी पढ़ा जा रहा यह पाठ, और आपके पसंदीदा YouTube वीडियो सभी अंततः &amp;ldquo;0 और 1 के अनुक्रमों&amp;rdquo; की एक विशाल संख्या में कम हो जाते हैं। गणना इस 0 और 1 के अनुक्रम में AND, OR और NOT जैसे बुनियादी तार्किक सर्किटों को मिलाकर संचालन लागू करने की प्रक्रिया के अलावा और कुछ नहीं है।
यह एक बहुत ही निश्चित और नियतात्मक दुनिया है। यदि इनपुट समान है, तो आउटपुट हमेशा समान होगा।&lt;/p>
&lt;h3 id="कवटम-कपयटर-क-दनय-0-और-1-क-कवटम-बट-qubit">क्वांटम कंप्यूटरों की दुनिया: 0 और 1 का &amp;ldquo;क्वांटम बिट (Qubit)&amp;rdquo;
&lt;/h3>&lt;p>दूसरी ओर, एक क्वांटम कंप्यूटर की न्यूनतम सूचना इकाई को &lt;strong>क्वांटम बिट (Qubit: Quantum bit)&lt;/strong> कहा जाता है।
क्वांटम बिट की सबसे बड़ी विशेषता यह है कि यह केवल एक शास्त्रीय बिट की तरह &amp;ldquo;0&amp;rdquo; या &amp;ldquo;1&amp;rdquo; स्थिति में नहीं होता है, बल्कि &amp;ldquo;ऐसी स्थिति में होता है जहां 0 और 1 एक विशिष्ट संभाव्यता के साथ मिश्रित होते हैं&amp;rdquo;। इसे &lt;strong>&amp;ldquo;सुपरपोजिशन (Superposition)&amp;rdquo;&lt;/strong> कहा जाता है।&lt;/p>
&lt;p>उदाहरण के लिए, यदि एक शास्त्रीय बिट एक सिक्का है जिसे &amp;ldquo;चित&amp;rdquo; या &amp;ldquo;पट&amp;rdquo; के साथ रखा जाता है, तो एक क्वांटम बिट की तुलना अक्सर &amp;ldquo;हवा में घूमते हुए सिक्के&amp;rdquo; से की जाती है। एक घूमते हुए सिक्के को न तो चित कहा जा सकता है और न ही पट, और दोनों स्थितियां सुपरइम्पोज़ (अतिव्यापी) होती हैं। फिर, जिस क्षण सिक्का फर्श पर गिरता है और चलना बंद कर देता है (इसे क्वांटम यांत्रिकी में &amp;ldquo;अवलोकन&amp;rdquo; कहा जाता है), यह पहली बार निर्धारित होता है कि यह &amp;ldquo;चित&amp;rdquo; या &amp;ldquo;पट&amp;rdquo;।&lt;/p>
&lt;p>क्वांटम कंप्यूटर इस गुण को शामिल करते हैं, जो सूक्ष्म दुनिया (क्वांटम यांत्रिकी) के लिए अद्वितीय है, जहां &amp;ldquo;स्थिति तब तक निर्धारित नहीं होती है जब तक कि यह अवलोकन न किया जाए&amp;rdquo;, सीधे सूचना प्रसंस्करण प्रक्रिया में।&lt;/p>
&lt;hr>
&lt;h2 id="अधयय-2-3-कवटम-यतरक-गण-ज-मलक-रप-स-गणन-क-बदलत-ह">अध्याय 2: 3 क्वांटम यांत्रिक गुण जो मौलिक रूप से गणना को बदलते हैं
&lt;/h2>&lt;p>क्वांटम कंप्यूटरों की अद्भुत गणना शक्ति का स्रोत केवल उच्च क्लॉक आवृत्ति या छोटे घटकों का होना नहीं है। यह इस तथ्य में निहित है कि वे भौतिकी के नियमों का उपयोग गणना संसाधनों के रूप में करते हैं। निम्नलिखित तीन क्वांटम यांत्रिक घटनाएं मुख्य कुंजियां हैं।&lt;/p>
&lt;h3 id="1-सपरपजशन-superposition-और-घतय-सचन-मतर">1. सुपरपोजिशन (Superposition) और घातीय सूचना मात्रा
&lt;/h3>&lt;p>जैसा कि पहले उल्लेख किया गया জ্ঞ, क्वांटम बिट्स एक ही समय में 0 और 1 दोनों स्थितियों को पकड़ सकते हैं। एक क्वांटम बिट &amp;ldquo;0 और 1 का सुपरपोजिशन&amp;rdquo; है, लेकिन क्या होता है जब आप क्वांटम बिट्स की संख्या बढ़ाते हैं?&lt;/p>
&lt;ul>
&lt;li>1 क्वांटम बिट: 2 स्थितियों का सुपरपोजिशन (0, 1)&lt;/li>
&lt;li>2 क्वांटम बिट्स: 4 स्थितियों का सुपरपोजिशन (00, 01, 10, 11)&lt;/li>
&lt;li>3 क्वांटम बिट्स: 8 स्थितियों का सुपरपोजिशन&lt;/li>
&lt;li>&lt;strong>N क्वांटम बिट्स: $2^N$ पैटर्न का सुपरपोजिशन&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>केवल 50 क्वांटम बिट्स के साथ, आप एक ही समय में $2^{50}$ (लगभग 1.1 क्वाड्रिलियन) स्थितियों को धारण कर सकते हैं। और केवल 300 क्वांटम बिट्स के साथ, आप एक ही समय में $2^{300}$ पैटर्न (ब्रह्मांड में सभी परमाणुओं की संख्या से अधिक!) धारण कर सकते हैं। यह घातीय सूचना प्रतिधारण क्षमता क्वांटम कंप्यूटरों की क्षमता का आधार है। एक शास्त्रीय कंप्यूटर के लिए स्मृति में ब्रह्मांड में परमाणुओं की संख्या से अधिक स्थितियों को संग्रहीत करना भौतिक रूप से असंभव है।&lt;/p>
&lt;h3 id="2-कवटम-उलझव-entanglement-डरवन-दर-क-कररवई">2. क्वांटम उलझाव (Entanglement): डरावनी दूर की कार्रवाई
&lt;/h3>&lt;p>क्वांटम उलझाव एक अजीब घटना है जो मानवीय अंतर्ज्ञान के इतनी खिलाफ है कि आइंस्टीन ने इसे &amp;ldquo;दूरी पर डरावनी कार्रवाई (Spooky action at a distance)&amp;rdquo; कहा और इसे जीवन भर स्वीकार नहीं किया।&lt;/p>
&lt;p>जब कई क्वांटम बिट्स &amp;ldquo;क्वांटम उलझाव&amp;rdquo; की स्थिति में प्रवेश करते हैं, तो वे एक-दूसरे से मजबूती से बंध जाते हैं, और एक भाग्य-साझा करने वाला रिश्ता बन जाता है जहां &lt;strong>&amp;ldquo;जब एक की स्थिति निर्धारित होती है, तो दूसरे की स्थिति तुरंत निर्धारित हो जाती है, चाहे वे कितनी भी दूर हों&amp;rdquo;&lt;/strong> ।&lt;/p>
&lt;p>उदाहरण के लिए, मान लीजिए कि हमारे पास दो क्वांटम बिट्स A और B हैं जो उलझी हुई अवस्था में हैं (वे प्रत्येक 0 और 1 की सुपरपोजिशन स्थिति में हैं)। यदि हम A का अवलोकन करते हैं और पाते हैं कि यह &amp;ldquo;0&amp;rdquo; है, तो प्रकाश की गति से अधिक गति से, जो सूचना संचरण की सीमा है, B की स्थिति तुरंत निर्धारित हो जाएगी (उदाहरण के लिए, यह हमेशा &amp;ldquo;1&amp;rdquo; होगा)।
क्वांटम कंप्यूटरों में, इस क्वांटम उलझाव का उपयोग कई क्वांटम बिट्स के बीच जटिल सहसंबंधों को व्यक्त करने और बड़े पैमाने पर समानांतर सूचना प्रसंस्करण करने के लिए किया जाता है। उलझाव के बिना, क्वांटम कंप्यूटरों की कम्प्यूटेशनल शक्ति शास्त्रीय कंप्यूटरों से बहुत अलग नहीं होगी।&lt;/p>
&lt;h3 id="3-कवटम-हसतकषप-quantum-interference-वह-जद-ज-सह-उततर-क-समन-लत-ह">3. क्वांटम हस्तक्षेप (Quantum Interference): वह जादू जो सही उत्तर को सामने लाता है
&lt;/h3>&lt;p>आप सोच सकते हैं, &amp;ldquo;यदि यह एक ही समय में सभी पैटर्नों को धारण कर सकता है, तो क्या यह एक ही बार में समानांतर में गणना नहीं कर सकता है और तुरंत उत्तर प्राप्त नहीं कर सकता है?&amp;rdquo; यह क्वांटम कंप्यूटरों के बारे में सबसे आम गलतफहमी है।
भले ही आप सुपरपोजिशन अवस्था में गणना करते हैं, अंततः उत्तर जानने के लिए आपको &amp;ldquo;अवलोकन&amp;rdquo; करना होगा। हालाँकि, जिस क्षण आप इसका अवलोकन करते हैं, स्थिति यादृच्छिक रूप से $2^N$ पैटर्न में से एक में ढह जाती है। इसके साथ, आपको केवल एक यादृच्छिक (random) उत्तर मिलता है।&lt;/p>
&lt;p>यहीं पर &lt;strong>&amp;ldquo;क्वांटम हस्तक्षेप (Interference)&amp;rdquo;&lt;/strong> खेल में आता है। जब तरंगें एक-दूसरे से टकराती हैं, तो वे एक-दूसरे को मजबूत करती हैं जहां उनकी तरंग दैर्ध्य मेल खाती है, और जहां वे संरेखण से बाहर होती हैं वहां एक-दूसरे को रद्द कर देती हैं (यह अनिवार्य रूप से शोर-रद्द करने वाले इयरफ़ोन के समान सिद्धांत है)।&lt;/p>
&lt;p>एक उत्कृष्ट &amp;ldquo;क्वांटम एल्गोरिथ्म&amp;rdquo; गणना प्रक्रिया के दौरान चतुराई से क्वांटम स्थितियों में हेरफेर करता है ताकि &lt;strong>&amp;ldquo;उन स्थितियों (तरंगों) के संभाव्यता आयामों को बढ़ाया जा सके जो सही उत्तर की ओर ले जाते हैं&amp;rdquo;&lt;/strong> और &lt;strong>&amp;ldquo;उन स्थितियों के संभाव्यता आयामों को रद्द किया जा सके जो गलत उत्तर की ओर ले जाते हैं&amp;rdquo;&lt;/strong> । और जब आप अंततः इसका अवलोकन करते हैं, तो यह ऐसा करता है कि &amp;ldquo;सही उत्तर&amp;rdquo; लगभग 100% की संभावना के साथ निकल आता है। इस हस्तक्षेप प्रक्रिया को सफलतापूर्वक डिज़ाइन करना क्वांटम प्रोग्रामिंग का सार है।&lt;/p>
&lt;hr>
&lt;h2 id="अधयय-3-यह-गणन-कस-करत-ह-कवटम-गटस-और-कवटम-सरकट">अध्याय 3: यह गणना कैसे करता है? &amp;ldquo;क्वांटम गेट्स&amp;rdquo; और &amp;ldquo;क्वांटम सर्किट&amp;rdquo;
&lt;/h2>&lt;p>जिस तरह शास्त्रीय कंप्यूटर गणना को आगे बढ़ाने के लिए लॉजिक गेट्स (AND, OR, NOT, आदि) का उपयोग करते हैं, उसी तरह क्वांटम कंप्यूटर भी गणना को आगे बढ़ाने के लिए क्वांटम बिट्स पर &lt;strong>&amp;ldquo;क्वांटम गेट्स (Quantum Gates)&amp;rdquo;&lt;/strong> नामक संचालन लागू करते हैं। कई क्वांटम गेट्स के संयोजन को ** क्वांटम सर्किट (Quantum Circuit) ** कहा जाता है।&lt;/p>
&lt;p>क्वांटम बिट की स्थिति को गणितीय रूप से 3-आयामी क्षेत्र की सतह पर एक बिंदु के रूप में दर्शाया जाता है जिसे &amp;ldquo;बलोच क्षेत्र (Bloch sphere)&amp;rdquo; कहा जाता है। उत्तरी ध्रुव &amp;ldquo;0&amp;rdquo; है, दक्षिणी ध्रुव &amp;ldquo;1&amp;rdquo; है, और भूमध्य रेखा &amp;ldquo;ऐसी स्थिति है जहां 0 और 1 आधे-आधे सुपरइम्पोज़ होते हैं&amp;rdquo;। एक क्वांटम गेट इस क्षेत्र की सतह पर स्थिति (वेक्टर) को घुमाने के अलावा और कुछ नहीं है।&lt;/p>
&lt;p>आइए कुछ विशिष्ट क्वांटम गेट्स का परिचय दें।&lt;/p>
&lt;h3 id="1-हडमरड-गट-h-गट">1. हैडामर्ड गेट (H गेट)
&lt;/h3>&lt;p>यह एक क्वांटम कंप्यूटर के लिए अद्वितीय सबसे बुनियादी गेट है, जो शास्त्रीय कंप्यूटरों में मौजूद नहीं है। जब एक क्वांटम बिट पूरी तरह से &amp;ldquo;0&amp;rdquo; स्थिति में H गेट से गुजरता है, तो यह एक &amp;ldquo;पूर्ण सुपरपोजिशन स्थिति&amp;rdquo; (बलोच क्षेत्र पर भूमध्य रेखा पर एक बिंदु) बनाता है जहां 0 और 1 ठीक आधे समय देखे जाते हैं। कई एल्गोरिदम क्वांटम गणना के लिए आरंभीकरण कदम के रूप में सभी क्वांटम बिट्स में इस H गेट को लागू करके शुरू होते हैं।&lt;/p>
&lt;h3 id="2-पउल-गट-x-y-z-गट">2. पाउली गेट (X, Y, Z गेट)
&lt;/h3>&lt;p>वे गेट जिनमें शास्त्रीय कंप्यूटर के NOT गेट (0 को 1 में, और 1 को 0 में बदलना) के बराबर संचालन शामिल हैं। बलोच क्षेत्र में, यह X-अक्ष, Y-अक्ष और Z-अक्ष के चारों ओर 180 डिग्री घूमने के बराबर है। विशेष रूप से, X गेट उत्तरी ध्रुव (0) को दक्षिणी ध्रुव (1) में उलट देता है, इसलिए यह बिल्कुल शास्त्रीय NOT गेट की तरह काम करता है। Z गेट की सुपरपोजिशन के &amp;ldquo;चरण (तरंग के समय जैसी कोई चीज़)&amp;rdquo; को उलटने की भूमिका होती है, और यह क्वांटम हस्तक्षेप पैदा करने में अत्यंत महत्वपूर्ण है।&lt;/p>
&lt;h3 id="3-cnot-गट-नयतरत-not-गट">3. CNOT गेट (नियंत्रित NOT गेट)
&lt;/h3>&lt;p>क्वांटम उलझाव बनाने के लिए यह एक अति-महत्वपूर्ण गेट है। यह दो क्वांटम बिट्स (नियंत्रण बिट और लक्ष्य बिट) का उपयोग करता है।
यह इस तरह से काम करता है: &amp;ldquo;यदि नियंत्रण बिट 1 है, तो लक्ष्य बिट की स्थिति उलट जाती है (X गेट)। यदि नियंत्रण बिट 0 है, तो यह कुछ नहीं करता है।&amp;rdquo; पहली नज़र में, यह एक साधारण IF शर्त शाखा की तरह लगता है, लेकिन क्या होता है यदि नियंत्रण बिट &amp;ldquo;0 और 1 की सुपरपोजिशन स्थिति&amp;rdquo; में है? लक्ष्य बिट &amp;ldquo;उलटे और बिना उलटे का सुपरपोजिशन स्थिति&amp;rdquo; में होगा, और दोनों बिट्स का भाग्य पूरी तरह से जुड़ जाएगा। दो क्वांटम बिट्स खूबसूरती से &amp;ldquo;उलझ (entangled)&amp;rdquo; जाते हैं।&lt;/p>
&lt;p>इन गेट्स को संगीत स्कोर की तरह बाएं से दाएं क्रम में रखकर और लागू करके, जटिल एल्गोरिदम निष्पादित किए जाते हैं।&lt;/p>
&lt;hr>
&lt;h2 id="अधयय-4-कवटम-कपयटर-कसम-अचछ-ह-और-कसम-खरब">अध्याय 4: क्वांटम कंप्यूटर किसमें अच्छे हैं और किसमें खराब?
&lt;/h2>&lt;p>यहां एक महत्वपूर्ण तथ्य बताया गया है: क्वांटम कंप्यूटर सर्वशक्तिमान ईश्वर नहीं हैं।
हर रोज़ के कामों जैसे वेब ब्राउज़िंग, वीडियो रेंडरिंग, एक्सेल मैक्रो प्रोसेसिंग, या सामान्य स्मार्टफोन ऐप ऑपरेशंस में, क्वांटम कंप्यूटर शायद कभी भी शास्त्रीय कंप्यूटरों को पार नहीं कर पाएंगे। ये अनुक्रमिक प्रक्रियाएँ पहले से ही अत्यधिक अनुकूलित हैं, और भारी गति और सस्तेपन का दावा करने वाले शास्त्रीय कंप्यूटर इनके लिए अधिक उपयुक्त हैं।&lt;/p>
&lt;p>क्वांटम कंप्यूटरों का वास्तविक मूल्य केवल &lt;strong>&amp;ldquo;विशिष्ट समस्याओं के लिए महसूस किया जाता है जहां शास्त्रीय कंप्यूटरों में गणना संयोजनों की संख्या तेजी से बढ़ती है, और ब्रह्मांड के जीवनकाल जितना समय लगता है&amp;rdquo;&lt;/strong> । इसे &amp;ldquo;क्वांटम सर्वोच्चता (Quantum Supremacy)&amp;rdquo; या &amp;ldquo;क्वांटम लाभ (Quantum Advantage)&amp;rdquo; कहा जाता है।&lt;/p>
&lt;h3 id="कवटम-कपयटर-कसम-अचछ-ह-कलर-एपलकशन">क्वांटम कंप्यूटर किसमें अच्छे हैं (किलर एप्लिकेशन)
&lt;/h3>&lt;h4 id="1-अभजय-गणनखडन-और-डकरपशन-शर-क-एलगरथम">1. अभाज्य गुणनखंडन और डिक्रिप्शन (शोर का एल्गोरिथ्म)
&lt;/h4>&lt;p>वर्तमान में, इंटरनेट पर सुरक्षित संचार (क्रेडिट कार्ड से भुगतान और व्यक्तिगत जानकारी का प्रसारण आदि) की रक्षा करने वाला &amp;ldquo;RSA क्रिप्टोग्राफी&amp;rdquo; इस आधार पर आधारित है कि &amp;ldquo;शास्त्रीय कंप्यूटरों के लिए बड़ी संख्याओं का अभाज्य गुणनखंडन व्यावहारिक रूप से असंभव है (इसमें बहुत समय लगता है)&amp;quot;।
हालाँकि, 1994 में गणितज्ञ पीटर शोर द्वारा खोजे गए &amp;ldquo;शोर के एल्गोरिथ्म&amp;rdquo; का उपयोग करके, एक क्वांटम कंप्यूटर बड़ी चतुराई से हस्तक्षेप का उपयोग करके नाटकीय गति (बहुपद समय) से इसे हल कर सकता है। इसके परिणामस्वरूप, भविष्य में वर्तमान क्रिप्टोग्राफ़िक प्रणाली के ढहने का जोखिम है, और दुनिया भर के केंद्रीय बैंक और सरकारी एजेंसियां &amp;ldquo;क्वांटम-प्रतिरोधी क्रिप्टोग्राफी (Post-Quantum Cryptography)&amp;rdquo; में संक्रमण के लिए जल्दबाजी कर रही हैं।&lt;/p>
&lt;h4 id="2-कवटम-रसयनक-गणन-और-नई-समगरदव-वकस">2. क्वांटम रासायनिक गणना और नई सामग्री/दवा विकास
&lt;/h4>&lt;p>प्रकृति में अणुओं और परमाणुओं का व्यवहार स्वाभाविक रूप से क्वांटम यांत्रिकी के नियमों का पालन करता है। जब हम एक शास्त्रीय कंप्यूटर के साथ जटिल अणुओं के व्यवहार का अनुकरण करने का प्रयास करते हैं, तो इलेक्ट्रॉनों के बीच बातचीत के संयोजन विस्फोट हो जाते हैं, और अपेक्षाकृत छोटे अणुओं के साथ भी हम कम्प्यूटेशनल सीमा तक पहुंच जाते हैं।
जैसा कि नोबेल पुरस्कार विजेता भौतिक विज्ञानी रिचर्ड फेनमैन ने कहा था, &amp;ldquo;यदि आप प्रकृति का अनुकरण करना चाहते हैं, तो आपको इसे क्वांटम यांत्रिक रूप से करना होगा&amp;rdquo;, क्वांटम कंप्यूटर सामग्री सिमुलेशन में भारी देशी शक्ति का प्रदर्शन करते हैं। सफल नई दवाओं का डिज़ाइन, कमरे के तापमान वाली सुपरकंडक्टिंग सामग्री की खोज, उच्च दक्षता वाली सौर कोशिकाओं और बैटरी सामग्री का विकास, और ऊर्जा-कुशल उर्वरकों का संश्लेषण ऐसी कुछ सफलताएं हैं जिनसे मानवीय समस्याओं को हल करने की उम्मीद है।&lt;/p>
&lt;h4 id="3-सयजन-अनकलन-समसयए-और-खज-गरवर-क-एलगरथम">3. संयोजन अनुकूलन समस्याएं और खोज (ग्रोवर का एल्गोरिथ्म)
&lt;/h4>&lt;p>विकल्पों की एक विशाल संख्या (लॉजिस्टिक्स ऑप्टिमाइज़ेशन रूट, वित्तीय पोर्टफोलियो ऑप्टिमाइज़ेशन, आदि) से सर्वश्रेष्ठ को खोजने की समस्या के लिए भी, क्वांटम एल्गोरिदम अपनी शक्ति दिखाते हैं। &amp;ldquo;ग्रोवर के एल्गोरिथ्म&amp;rdquo; का उपयोग करके, आप असंरचित डेटाबेस से शास्त्रीय कंप्यूटर के वर्गमूल (स्क्वायर रूट) के समय में वांछित डेटा पा सकते हैं। उदाहरण के लिए, यदि 100 मिलियन डेटा आइटम हैं, तो एक शास्त्रीय कंप्यूटर जिसे खोजने में 100 मिलियन बार तक का समय लगता है, उसे केवल 10,000 बार में पूरा किया जा सकता है।&lt;/p>
&lt;hr>
&lt;h2 id="अधयय-5-हरडवयर-क-दवर-ज-रसत-म-खड-ह-डकहरस-और-कवटम-तरट-सधर">अध्याय 5: हार्डवेयर की दीवार जो रास्ते में खड़ी है: &amp;ldquo;डिकोहेरेंस&amp;rdquo; और &amp;ldquo;क्वांटम त्रुटि सुधार&amp;rdquo;
&lt;/h2>&lt;p>हालांकि सैद्धांतिक रूप से जादुई रूप से शक्तिशाली, क्वांटम कंप्यूटरों के व्यावहारिक अनुप्रयोग के रास्ते में एक बहुत ही उच्च और खड़ी भौतिक दीवार है। सबसे बड़ा दुश्मन &lt;strong>&amp;ldquo;शोर (Noise)&amp;rdquo;&lt;/strong> है।&lt;/p>
&lt;p>क्वांटम बिट्स का &amp;ldquo;सुपरपोजिशन&amp;rdquo; और &amp;ldquo;क्वांटम उलझाव&amp;rdquo; बेहद नाजुक और नाजुक अवस्थाएँ हैं। बस परिवेशी गर्मी, विद्युत चुम्बकीय उतार-चढ़ाव, या कॉस्मिक किरणों को छूने से, जादुई स्थिति तुरंत ढह जाती है और केवल एक शास्त्रीय बिट बन जाती है। इस घटना को &lt;strong>&amp;ldquo;डिकोहेरेंस (क्वांटम पतन)&amp;rdquo;&lt;/strong> कहा जाता है।&lt;/p>
&lt;h3 id="भतक-परपत-वधय-क-लए-भयकर-परतसपरध">भौतिक प्राप्ति विधियों के लिए भयंकर प्रतिस्पर्धा
&lt;/h3>&lt;p>वर्तमान में, इन नाजुक क्वांटम बिट्स को भौतिक रूप से कैसे बनाया जाए, इस पर दुनिया भर में विभिन्न तरीकों पर शोध किया जा रहा है, और वर्चस्व की लड़ाई हो रही है।&lt;/p>
&lt;ul>
&lt;li>&lt;strong>सुपरकंडक्टिंग विधि (Superconducting)&lt;/strong> : Google, IBM, Amazon, आदि द्वारा अपनाया गया। एक लूप-आकार के सुपरकंडक्टिंग सर्किट का उपयोग किया जाता है, और क्वांटम स्थिति को नियंत्रित करने के लिए इसे एक विशाल रेफ्रिजरेटर के साथ पूर्ण शून्य (लगभग -273°C) के करीब क्रायोजेनिक तापमान तक ठंडा किया जाता है। यह वर्तमान में सबसे अग्रणी तरीका है और क्वांटम बिट्स की संख्या बढ़ाना आसान है, लेकिन शीतलन उपकरण बहुत बड़ा और महंगा है।&lt;/li>
&lt;li>&lt;strong>आयन ट्रैप विधि (Trapped Ion)&lt;/strong> : IonQ, Quantinuum, आदि द्वारा अपनाया गया। आयनों (परमाणुओं) को विद्युत चुम्बकीय क्षेत्रों का उपयोग करके निर्वात में फंसाया जाता है, और उन्हें नियंत्रित करने के लिए सटीक लेजर लागू किए जाते हैं। ताकत यह है कि सभी क्वांटम बिट्स एक समान हैं और स्थिति को लंबे समय तक बनाए रखा जा सकता है (लंबा सुसंगतता समय), लेकिन चुनौती यह है कि संचालन की गति सुपरकंडक्टिंग विधि की तुलना में धीमी है।&lt;/li>
&lt;li>&lt;strong>ऑप्टिकल क्वांटम विधि (Photonic)&lt;/strong> : PsiQuantum, आदि द्वारा केंद्रित। प्रकाश के कणों (फोटोन) का उपयोग किया जाता है। क्रायोजेनिक वातावरण की आवश्यकता नहीं होती है और कई हिस्से कमरे के तापमान पर काम বৃহত্তর करते हैं, जिसका बड़ा फायदा मौजूदा सिलिकॉन चिप निर्माण तकनीक और ऑप्टिकल फाइबर संचार तकनीक के अनुकूल होना है।&lt;/li>
&lt;li>&lt;strong>टोपोलॉजिकल विधि (Topological)&lt;/strong> : माइक्रोसॉफ्ट द्वारा कई वर्षों तक शोध किया गया। यह एनीन्स नामक विशेष कणों के टोपोलॉजिकल (टॉपोलॉजिकल) गुणों का उपयोग करके क्वांटम बिट्स बनाने का एक महत्वाकांक्षी दृष्टिकोण है जो पर्यावरणीय शोर के लिए मौलिक रूप से प्रतिरोधी हैं (त्रुटियों का खतरा कम)। इसे सिद्धांत रूप में सबसे मजबूत माना जाता है, लेकिन भौतिक प्राप्ति के लिए सबसे अधिक बाधाओं वाला माना जाता है।&lt;/li>
&lt;/ul>
&lt;h3 id="अतम-लकषय-क-मरग-फलट-टलरट-कवटम-कपयटर-ftqc">अंतिम लक्ष्य का मार्ग: &amp;ldquo;फॉल्ट-टॉलरेंट क्वांटम कंप्यूटर (FTQC)&amp;rdquo;
&lt;/h3>&lt;p>वर्तमान शास्त्रीय कंप्यूटर दुनिया में भी गणना त्रुटियां (जैसे कॉस्मिक किरणों के कारण बिट फ़्लिप) मौजूद हैं, लेकिन उन्हें &amp;ldquo;त्रुटि सुधार कोड&amp;rdquo; द्वारा पूरी तरह से ठीक किया जाता है, इसलिए हम बिना किसी त्रुटि के अपने स्मार्टफोन का उपयोग कर सकते हैं। क्वांटम कंप्यूटरों में व्यावहारिक बड़े पैमाने पर गणना करने के लिए, इसी तरह का &lt;strong>&amp;ldquo;क्वांटम त्रुटि सुधार (Quantum Error Correction: QEC)&amp;rdquo;&lt;/strong> आवश्यक है।&lt;/p>
&lt;p>हालाँकि, चूंकि क्वांटम स्थितियों में &amp;ldquo;अवलोकन किए जाने पर टूटने&amp;rdquo; की संपत्ति होती है, इसलिए एक घातक दुविधा है कि आप त्रुटियों की जांच करने के लिए सीधे अंदर नहीं देख सकते (निरीक्षण नहीं कर सकते)।
इससे बचने के लिए, त्रुटियों का पता लगाने और उन्हें ठीक करने के लिए एक स्थिर &amp;ldquo;तार्किक क्वांटम बिट&amp;rdquo; बनाने के लिए कई अस्थिर &amp;ldquo;भौतिक क्वांटम बिट्स&amp;rdquo; को चतुराई से संयोजित करने का एक सिद्धांत स्थापित किया गया है (जैसे सतह कोड)।
हालाँकि, कहा जाता है कि एक तार्किक क्वांटम बिट बनाने के लिए 1,000 से 10,000 भौतिक क्वांटम बिट्स की आवश्यकता होती है। शोर के एल्गोरिथ्म आदि को निष्पादित करने के लिए हजारों तार्किक क्वांटम बिट्स का उपयोग करने के लिए, कुल लाखों से करोड़ों भौतिक क्वांटम बिट्स के साथ एक विशाल प्रणाली की आवश्यकता होगी।&lt;/p>
&lt;p>हम वर्तमान में जिसे &lt;strong>NISQ (Noisy Intermediate-Scale Quantum: शोर मध्यवर्ती-पैमाने क्वांटम)&lt;/strong> उपकरणों का युग कहा जाता है, उसमें हैं। ये संक्रमणकालीन मशीनें हैं जो बिना त्रुटि सुधार के दसियों से सैकड़ों क्वांटम बिट्स के साथ काम करती हैं।
विशेषज्ञों का अनुमान है कि &lt;strong>&amp;ldquo;फॉल्ट-टॉलरेंट क्वांटम कंप्यूटर (Fault-Tolerant Quantum Computer: FTQC)&amp;rdquo;&lt;/strong> के अंतिम लक्ष्य को साकार करने में अभी भी 10 से कई दशक लंबी अवधि के अनुसंधान और विकास की आवश्यकता है, जो पूरी तरह से त्रुटि-सुधारने में सक्षम है।&lt;/p>
&lt;hr>
&lt;h2 id="अधयय-6-कवटम-कपयटर-क-इतहस-और-भवषय-क-सभवनए">अध्याय 6: क्वांटम कंप्यूटरों का इतिहास और भविष्य की संभावनाएं
&lt;/h2>&lt;p>अंत में, आइए एक नजर डालते हैं कि क्वांटम कंप्यूटर कैसे पैदा हुए और वे भविष्य में कहां जा रहे हैं।&lt;/p>
&lt;h3 id="सदधत-क-जनम-स-लकर-कवटम-सरवचचत-क-परदरशन-तक">सिद्धांत के जन्म से लेकर &amp;ldquo;क्वांटम सर्वोच्चता&amp;rdquo; के प्रदर्शन तक
&lt;/h3>&lt;ul>
&lt;li>&lt;strong>1980 का दशक&lt;/strong> : भौतिक विज्ञानी पॉल बेनियोफ और रिचर्ड फेनमैन ने क्वांटम यांत्रिकी के सिद्धांतों का उपयोग करते हुए एक कंप्यूटर की अवधारणा का प्रस्ताव रखा। &amp;ldquo;यदि आप प्रकृति का अनुकरण करना चाहते हैं, तो क्वांटम यांत्रिकी का उपयोग करें&amp;rdquo; शब्द शुरुआती बिंदु थे।&lt;/li>
&lt;li>&lt;strong>1994&lt;/strong> : पीटर शोर ने अभाज्य गुणनखंडन (शोर का एल्गोरिथ्म) के लिए एक क्वांटम एल्गोरिथ्म प्रकाशित किया। इसने दुनिया को चौंका दिया और बड़ी मात्रा में शोध निधि प्रवाहित होने लगी।&lt;/li>
&lt;li>&lt;strong>1996&lt;/strong> : लव ग्रोवर ने ग्रोवर का एल्गोरिथ्म प्रकाशित किया, जो डेटा खोजों को गति देता है।&lt;/li>
&lt;li>**2019 ** : एक ऐतिहासिक मील का पत्थर। Google ने घोषणा की कि उसने अपने 53-क्विबिट सुपरकंडक्टिंग प्रोसेसर &amp;ldquo;Sycamore&amp;rdquo; का उपयोग करके लगभग 200 सेकंड में एक यादृच्छिक संख्या जनरेशन सत्यापन गणना पूरी की है जिसे एक शास्त्रीय सुपरकंप्यूटर पर 10,000 वर्ष लगने की उम्मीद थी। इसने दुनिया की पहली &lt;strong>&amp;ldquo;क्वांटम सर्वोच्चता (Quantum Supremacy)&amp;rdquo;&lt;/strong> के प्रदर्शन के रूप में बहुत ध्यान आकर्षित किया (बाद में, IBM और अन्य ने शास्त्रीय सुपरकंप्यूटर पक्ष पर एल्गोरिथ्म में सुधार किया और तर्क दिया कि इसकी गणना कुछ ही दिनों में की जा सकती है, जिससे एक गर्म बहस छिड़ गई)।&lt;/li>
&lt;li>&lt;strong>2023 और उसके बाद&lt;/strong> : IBM ने 1,000 से अधिक क्वांटम बिट्स के साथ &amp;ldquo;Condor&amp;rdquo; प्रोसेसर की घोषणा की। इसके अलावा, हार्वर्ड विश्वविद्यालय और अन्य ने &amp;ldquo;तार्किक क्वांटम बिट्स&amp;rdquo; बनाने और हेरफेर करने में सफलता प्राप्त की है, और त्रुटि सुधार तकनीक के प्रारंभिक प्रदर्शनों की एक के बाद एक रिपोर्ट की जा रही है।&lt;/li>
&lt;/ul>
&lt;h3 id="अगल-पढ-क-परदयगक-क-ओर">अगली पीढ़ी की प्रौद्योगिकी की ओर
&lt;/h3>&lt;p>एक क्वांटम कंप्यूटर केवल &amp;ldquo;तेज घड़ी गति वाला अगली पीढ़ी का CPU&amp;rdquo; नहीं है। यह गणना की अवधारणा को मौलिक रूप से फिर से लिखता है, क्वांटम यांत्रिकी के नियमों का उपयोग करके जो सूक्ष्म दुनिया को नियंत्रित करता है, सूचना विज्ञान में एक वास्तविक प्रतिमान बदलाव है।&lt;/p>
&lt;p>शायद हमारे जीवनकाल में हमारे पास &amp;ldquo;व्यक्तिगत क्वांटम स्मार्टफोन&amp;rdquo; नहीं होंगे जो हमारी जेब में फिट हो सकें (इसकी कोई आवश्यकता भी नहीं है)। हालाँकि, वह भविष्य निश्चित रूप से करीब आ रहा है जहाँ AWS या Azure जैसे क्लाउड नेटवर्क के पीछे एक शक्तिशाली क्वांटम डेटा सेंटर अचानक एक लाइलाज बीमारी का इलाज खोज लेता है, या एक स्वप्निल स्वच्छ ऊर्जा सामग्री का पता लगाता है जो ग्लोबल वार्मिंग को हल करती है (उदाहरण के लिए, एक उत्प्रेरक जो कमरे के तापमान पर वायुमंडलीय नाइट्रोजन से अमोनिया को संश्लेषित करता है)।&lt;/p>
&lt;p>अब हम एक प्रारंभिक चरण में हैं जो 1940 के दशक में विशाल वैक्यूम ट्यूबों की गर्मी से उबलते हुए कमरों में पंच कार्डों पर चलने वाले ENIAC के बराबर है। हालाँकि, दुनिया भर के शीर्ष स्तर के शोधकर्ता और इंजीनियर अपनी बुद्धि लगा रहे हैं, और हर दिन तकनीकी सफलताओं की सूचना दी जा रही है।
इस नए &amp;ldquo;गणना की सुबह&amp;rdquo; के विकास के गवाह बन सकने वाले हम कह सकते हैं कि हम इतिहास के एक बहुत ही रोमांचक दौर में जी रहे हैं।&lt;/p>
&lt;p>क्वांटम दुनिया के दरवाजे अभी खुले हैं। हम भविष्य के रुझानों पर नज़र रखना जारी रखेंगे।&lt;/p>
&lt;hr>
&lt;p>&lt;em>इस लेख का उद्देश्य व्यावसायिक पेशेवरों और प्रौद्योगिकी में रुचि रखने वाले आम लोगों के लिए क्वांटम कंप्यूटिंग की बुनियादी अवधारणाओं को आसानी से समझने वाले तरीके से समझाना है। कृपया ध्यान दें कि कुछ सख्त गणितीय और भौतिक परिभाषाओं (जैसे ब्रा-केट नोटेशन और जटिल संभाव्यता आयामों का विवरण) को कुछ हद तक सरल बनाया गया है।&lt;/em>&lt;/p></description></item><item><title>क्या क्वांटम कंप्यूटर वास्तव में RSA एन्क्रिप्शन को नष्ट कर देगा? ~ शोर का एल्गोरिदम और वर्तमान स्थिति ~</title><link>http://kenji.blog/hi/p/shors-algorithm-and-rsa-breaking/</link><pubDate>Sat, 05 Sep 2026 22:09:21 +0900</pubDate><guid>http://kenji.blog/hi/p/shors-algorithm-and-rsa-breaking/</guid><description>&lt;img src="http://kenji.blog/p/shors-algorithm-and-rsa-breaking/quantum_breaking_rsa_1788613722990.jpg" alt="Featured image of post क्या क्वांटम कंप्यूटर वास्तव में RSA एन्क्रिप्शन को नष्ट कर देगा? ~ शोर का एल्गोरिदम और वर्तमान स्थिति ~" />&lt;h2 id="परचय-करपटगरफ-और-कवटम-कपयटर-क-परतचछदन">परिचय: क्रिप्टोग्राफी और क्वांटम कंप्यूटर का प्रतिच्छेदन
&lt;/h2>&lt;p>आधुनिक इंटरनेट समाज में, &amp;ldquo;सार्वजनिक-कुंजी क्रिप्टोग्राफी&amp;rdquo; (Public-key cryptography) संचार की गोपनीयता की रक्षा के लिए नींव के रूप में कार्य करती है। उनमें से सबसे प्रसिद्ध &amp;ldquo;RSA एन्क्रिप्शन&amp;rdquo; है, जिसे 1977 में रॉन रिवेस्ट, आदि शमीर और लियोनार्ड एडलमैन द्वारा विकसित किया गया था। ऑनलाइन शॉपिंग भुगतान, वेबसाइट ब्राउज़िंग (HTTPS) और हर दिन हमारे द्वारा उपयोग किए जाने वाले ईमेल भेजने और प्राप्त करने से लेकर, RSA एन्क्रिप्शन इंटरनेट बुनियादी ढांचे के दिल के रूप में कार्य करता है।&lt;/p>
&lt;p>हालाँकि, &amp;ldquo;क्वांटम कंप्यूटर&amp;rdquo; के आगमन के साथ, यह बताया गया है कि इस सुरक्षा को मूल रूप से उखाड़ फेंका जा सकता है। मीडिया में अक्सर सनसनीखेज सुर्खियां होती हैं जैसे &amp;ldquo;एक बार क्वांटम कंप्यूटर पूरा हो जाने पर, दुनिया भर के पासवर्ड और एन्क्रिप्शन सेकंडों में डिक्रिप्ट हो जाएंगे।&amp;rdquo; क्या वह सच में सच है?&lt;/p>
&lt;p>इस लेख में, हम GNFS (जनरल नंबर फील्ड सीव), एक क्लासिकल डिक्रिप्शन विधि, और &amp;ldquo;शोर का एल्गोरिदम&amp;rdquo; (Shor&amp;rsquo;s Algorithm) के तंत्र में गहराई से उतरेंगे, जो क्वांटम कंप्यूटर का उपयोग करके एक निश्चित डिक्रिप्शन एल्गोरिदम है। हम क्वांटम फूरियर ट्रांसफॉर्म और अवधि खोज जैसी उन्नत अवधारणाओं को आसानी से समझने वाले तरीके से समझाएंगे, और वर्तमान NISQ (Noisy Intermediate-Scale Quantum) युग में क्वांटम हार्डवेयर की वर्तमान स्थिति और RSA-2048 को क्रैक करने के लिए आवश्यक बाधाओं की विस्तार से जांच करेंगे।&lt;/p>
&lt;hr>
&lt;h2 id="rsa-एनकरपशन-क-आधर-अभजय-गणनखडन-क-कठनई">RSA एन्क्रिप्शन का आधार: अभाज्य गुणनखंडन की कठिनाई
&lt;/h2>&lt;p>RSA एन्क्रिप्शन की सुरक्षा गणित में एक अत्यंत सरल विषमता (asymmetry) पर निर्भर करती है। तथ्य यह है कि &amp;ldquo;दो विशाल अभाज्य संख्याओं (prime numbers) को गुणा करना आसान है, लेकिन परिणाम (समग्र संख्या) से मूल दो अभाज्य संख्याओं को खोजना (अभाज्य गुणनखंडन) बेहद मुश्किल है।&amp;rdquo;&lt;/p>
&lt;p>उदाहरण के लिए, मान लीजिए कि हमारे पास दो अभाज्य संख्याएं हैं $ p = 61 $ और $ q = 53 $। इस गुणा $ N = p \times q = 3233 $ की गणना करना तात्कालिक है। हालाँकि, यदि आपको केवल संख्या &amp;ldquo;3233&amp;rdquo; दी गई है और पूछा गया है &amp;ldquo;यह किन अभाज्य संख्याओं का गुणनफल है?&amp;rdquo;, तो संख्या के बड़े होने पर गणना की मात्रा विस्फोटक रूप से बढ़ जाती है।&lt;/p>
&lt;p>वर्तमान मुख्यधारा RSA-2048 में, 2048 बिट्स की कुंजी लंबाई का उपयोग किया जाता है, जो दशमलव में लगभग 617 अंकों की एक विशाल समग्र संख्या $ N $ है। यदि इस $ N $ का अभाज्य गुणनखंडन किया जा सकता है, तो एन्क्रिप्शन लगभग टूट गया है।&lt;/p>
&lt;h3 id="कलसकल-कपयटर-दवर-चनत-gnfs-समनय-सखय-कषतर-चलन">क्लासिकल कंप्यूटरों द्वारा चुनौती: GNFS (सामान्य संख्या क्षेत्र चलनी)
&lt;/h3>&lt;p>गणितज्ञों और क्रिप्टोग्राफरों ने अभाज्य गुणनखंडन समस्या को हल करने के लिए वर्षों से विभिन्न एल्गोरिदम विकसित किए हैं। उनमें से, वर्तमान में क्लासिकल कंप्यूटरों पर सबसे तेज़ &lt;strong>सामान्य संख्या क्षेत्र चलनी (GNFS: General Number Field Sieve)&lt;/strong> माना जाता है।&lt;/p>
&lt;p>GNFS एक बड़ी संख्या $ N $ का गुणनखंडन करने के लिए पूर्णांक वलय में गणना को अधिक अमूर्त बीजगणितीय संख्या क्षेत्र (Number Field) में विस्तारित करके विश्लेषण करने की एक विधि है। मोटे तौर पर प्रक्रिया इस प्रकार है:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>बहुपद का चयन&lt;/strong> : उचित घात और गुणांक वाला एक बहुपद $ f(x) $ खोजें जिसका मूल $ N $ हो।&lt;/li>
&lt;li>&lt;strong>डेटा संग्रह (छानना)&lt;/strong> : परिमेय और बीजगणितीय संख्या क्षेत्रों पर बड़ी संख्या में ऐसे जोड़े खोजें जिन्हें छोटे अभाज्य (smooth numbers) में तोड़ा जा सके। इस प्रक्रिया को &amp;ldquo;छानना&amp;rdquo; (sieving) कहा जाता है और इसमें सबसे अधिक समय लगता है।&lt;/li>
&lt;li>&lt;strong>मैट्रिक्स जनरेशन और रिडक्शन&lt;/strong> : एकत्रित संबंधों के आधार पर एक विशाल विरल मैट्रिक्स (Sparse matrix) उत्पन्न करें, और रैखिक बीजगणित विधियों (जैसे ब्लॉक लैंज़ोस विधि) का उपयोग करके समाधान खोजें।&lt;/li>
&lt;li>&lt;strong>वर्गमूल की गणना&lt;/strong> : अंत में, बीजगणितीय संख्या क्षेत्र पर वर्गमूल की गणना करें और $ N $ के गुणनखंड (अभाज्य गुणनखंड) प्राप्त करें।&lt;/li>
&lt;/ol>
&lt;p>GNFS की जटिलता का मूल्यांकन एसिम्प्टोटिक रूप से $ O(\exp((\sqrt[3]{\frac{64}{9}} + o(1)) (\log N)^{\frac{1}{3}} (\log \log N)^{\frac{2}{3}})) $ के रूप में किया जाता है। इसे &amp;ldquo;उप-घातीय&amp;rdquo; (Sub-exponential) समय जटिलता कहा जाता है। यद्यपि यह घातीय समय (Exponential time) से तेज़ है, यह बहुपद समय (Polynomial time) से बहुत धीमा है।&lt;/p>
&lt;p>वास्तव में, 2020 में, शोधकर्ताओं की एक अंतरराष्ट्रीय टीम ने GNFS का उपयोग करके RSA-250 (एक 829-बिट, 250-अंकीय समग्र संख्या) का सफलतापूर्वक गुणनखंडन किया। इस गणना में दुनिया भर के कंप्यूटिंग संसाधनों का उपयोग करते हुए लगभग 2700 CPU कोर-वर्ष का खगोलीय गणना समय लगा। हालाँकि, जब बात 2048 बिट्स की आती है, तो यह कहा जाता है कि आवश्यक गणना ब्रह्मांड के जीवनकाल के खरबों गुना तक बढ़ जाएगी, जिससे वर्तमान सुपरकंप्यूटरों को कितना भी समानांतर चलाया जाए, शास्त्रीय तरीकों से यथार्थवादी समय के भीतर इसे क्रैक करना असंभव हो जाता है।&lt;/p>
&lt;hr>
&lt;h2 id="कवटम-कपयटर-क-टरमप-करड-शर-क-एलगरदम">क्वांटम कंप्यूटर का ट्रम्प कार्ड: शोर का एल्गोरिदम
&lt;/h2>&lt;p>यहीं पर &amp;ldquo;शोर का एल्गोरिदम&amp;rdquo; (Shor&amp;rsquo;s Algorithm), जिसे 1994 में पीटर शोर द्वारा प्रस्तुत किया गया था, सामने आता है। यह एल्गोरिदम क्रांतिकारी था क्योंकि यह क्वांटम कंप्यूटर पर &lt;strong>बहुपद समय&lt;/strong> ( $ O((\log N)^3) $ ) में अभाज्य गुणनखंडन समस्या को हल कर सकता था। उप-घातीय समय और बहुपद समय के बीच का अंतर निर्णायक है, जिसका अर्थ है कि सिद्धांत रूप में, यदि हम क्वांटम कंप्यूटर का उपयोग करते हैं, तो RSA एन्क्रिप्शन पूरी तरह से नष्ट हो जाएगा।&lt;/p>
&lt;h3 id="शर-क-एलगरदम-क-समगर-परवह">शोर के एल्गोरिदम का समग्र प्रवाह
&lt;/h3>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">graph TD
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> A[उस संख्या N को इनपुट करें जिसका आप गुणनखंड करना चाहते हैं] --&amp;gt; B[एक यादृच्छिक पूर्णांक a चुनें]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> B --&amp;gt; C{a और N का&amp;lt;br&amp;gt;महतम समापवर्तक (GCD)}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> C --&amp;gt;|1 से बड़ा| D[सौभाग्य से एक अभाज्य गुणनखंड मिला!]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> C --&amp;gt;|1 सह-अभाज्य| E[क्वांटम कंप्यूटर की बारी]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> E --&amp;gt; F[फलन f_x = a^x mod N की&amp;lt;br&amp;gt;अवधि r को क्वांटम फूरियर ट्रांसफॉर्म से खोजें]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> F --&amp;gt; G{अवधि r सम है और&amp;lt;br&amp;gt;a^r/2 ≢ -1 mod N}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> G --&amp;gt;|हाँ| H[महतम समापवर्तक gcd_a^r/2 ± 1, N की गणना करें]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> H --&amp;gt; I((अभाज्य गुणनखंडन सफल!))
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> G --&amp;gt;|नहीं| B
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>सीधे अभाज्य गुणनखंडन समस्या को हल करने के बजाय, शोर का एल्गोरिदम इसे संख्या सिद्धांत प्रमेयों का उपयोग करके &amp;ldquo;अवधि खोज समस्या&amp;rdquo; (Period Finding Problem) नामक एक अन्य समस्या में परिवर्तित करता है, और इसे उच्च गति से हल करने के लिए क्वांटम कंप्यूटर की विशेषताओं का उपयोग करता है।&lt;/p>
&lt;h3 id="चरण-1-अभजय-गणनखडन-स-अवध-खज-समसय-म-कम-शसतरय-परससकरण">चरण 1: अभाज्य गुणनखंडन से अवधि खोज समस्या में कमी (शास्त्रीय प्रसंस्करण)
&lt;/h3>&lt;p>एल्गोरिदम का पहला चरण क्लासिकल कंप्यूटर पर किया जाता है।
उस संख्या $ N $ के लिए जिसका आप गुणनखंड करना चाहते हैं, एक यादृच्छिक पूर्णांक $ a $ ( $ 1 &lt; a &lt; N $ ) चुनें जो $ N $ (जिसका सबसे बड़ा सामान्य भाजक 1 है) का सह-अभाज्य (coprime) है। यदि, संयोग से, सबसे बड़ा सामान्य भाजक 1 नहीं है, तो उस समय पाया गया सामान्य भाजक $ N $ का एक अभाज्य गुणनखंड है, इसलिए डिक्रिप्शन पूरा हो गया है, लेकिन इसकी संभावना बहुत कम है।&lt;/p>
&lt;p>इसके बाद, निम्नलिखित मॉड्यूलर समीकरणों के अनुक्रम पर विचार करें।
$ f(x) = a^x \pmod N $&lt;/p>
&lt;p>यदि आप इस फ़ंक्शन $ f(x) $ में $ x = 1, 2, 3, \dots $ डालते हैं, तो मान यादृच्छिक लग सकते हैं, लेकिन चूंकि गणना एक सीमित सीमा के भीतर की जाती है, यह हमेशा किसी बिंदु पर अपने मूल मान पर वापस आ जाएगी और उसी अनुक्रम को दोहराएगी। इस पुनरावृत्ति की अवधि को $ r $ कहा जाता है। दूसरे शब्दों में,
न्यूनतम धनात्मक पूर्णांक $ r $ खोजना ताकि $ a^r \equiv 1 \pmod N $ हो, यही &amp;ldquo;अवधि खोज समस्या&amp;rdquo; है।&lt;/p>
&lt;p>यदि यह अवधि $ r $ मिल जाती है, और $ r $ सम है, तो $ a^r - 1 \equiv 0 \pmod N $, और गुणनखंडन सूत्र का उपयोग करके इसे
$ (a^{r/2} - 1)(a^{r/2} + 1) \equiv 0 \pmod N $
में बदला जा सकता है। यहाँ से, यूक्लिडियन एल्गोरिथ्म (Euclidean algorithm) का उपयोग करके $ N $ और $ a^{r/2} \pm 1 $ के सबसे बड़े सामान्य भाजक की गणना करके, $ N $ के अभाज्य गुणनखंडों को बहुत अधिक संभावना के साथ प्राप्त किया जा सकता है।&lt;/p>
&lt;p>क्लासिक कंप्यूटर के साथ अवधि $ r $ खोजने के लिए, अंततः घातीय चरणों की आवश्यकता होती है और इसे तेज नहीं किया जा सकता है। हालाँकि, क्वांटम कंप्यूटर के साथ, यह अवधि $ r $ तुरंत (बहुपद समय में) पाई जा सकती है।&lt;/p>
&lt;h3 id="चरण-2-कवटम-सथत-क-तयर-और-सपरपजशन">चरण 2: क्वांटम स्थिति की तैयारी और सुपरपोजिशन
&lt;/h3>&lt;p>यहीं से क्वांटम कंप्यूटर काम आते हैं।
क्वांटम कंप्यूटर &amp;ldquo;क्यूबिट्स&amp;rdquo; (Qubits) का उपयोग करते हैं जिनमें एक ही समय में &amp;ldquo;0&amp;rdquo; और &amp;ldquo;1&amp;rdquo; दोनों की स्थिति हो सकती है। शोर के एल्गोरिदम में, दो रजिस्टर तैयार किए जाते हैं: इनपुट को स्टोर करने के लिए एक रजिस्टर (पहला रजिस्टर) और गणना परिणाम को स्टोर करने के लिए एक रजिस्टर (दूसरा रजिस्टर)।&lt;/p>
&lt;p>सबसे पहले, एक क्वांटम गेट ऑपरेशन जिसे हैडमार्ड गेट (Hadamard gate) कहा जाता है, पहले रजिस्टर में सभी क्यूबिट्स पर लागू किया जाता है। यह पहले रजिस्टर को सभी संभावित $ x $ मानों ( $ 0 $ से $ 2^n-1 $ तक, जहाँ $ n $ पर्याप्त रूप से बड़ी संख्या में बिट्स है) के &lt;strong>समान सुपरपोजिशन&lt;/strong> (uniform superposition) स्थिति में लाता है।&lt;/p>
&lt;p>दूसरे शब्दों में, अनगिनत इनपुट मान जैसे $ x=0, 1, 2, 3, \dots $ क्वांटम कंप्यूटर के अंदर एक ही समय में समानांतर में मौजूद होते हैं।&lt;/p>
&lt;h3 id="चरण-3-कवटम-मडयलर-एकसपनशएशन-quantum-modular-exponentiation">चरण 3: क्वांटम मॉड्यूलर एक्सपोनेंशिएशन (Quantum Modular Exponentiation)
&lt;/h3>&lt;p>इसके बाद, पहले रजिस्टर की सुपरपोजिशन स्थिति को इनपुट के रूप में उपयोग करते हुए, $ f(x) = a^x \pmod N $ की गणना की जाती है और परिणाम दूसरे रजिस्टर में संग्रहीत किया जाता है।
चूँकि यह गणना क्वांटम सर्किट पर एकात्मक परिवर्तन (unitary transformation) के रूप में की जाती है, सभी $ x $ के लिए $ f(x) $ की गणना &amp;ldquo;एक साथ और समानांतर में (क्वांटम समानता)&amp;rdquo; की जाती है, जबकि सुपरपोजिशन को बनाए रखा जाता है।&lt;/p>
&lt;p>इस बिंदु पर संपूर्ण क्वांटम प्रणाली का स्थान राज्य के एक विशाल सुपरपोजिशन में है:
$ |x, a^x \bmod N\rangle $&lt;/p>
&lt;p>हालाँकि, यदि हम केवल यहाँ दूसरे रजिस्टर को मापते (निरीक्षण करते) हैं, तो केवल एक यादृच्छिक $ a^x \bmod N $ मान संभाव्य रूप से चुना जाएगा, और पहले रजिस्टर का $ x $ भी इसके संयोजन में निर्धारित किया जाएगा। यह शास्त्रीय कंप्यूटर पर एक बार गणना करने के समान है, और अवधि $ r $ नहीं पाई जा सकती है।&lt;/p>
&lt;p>क्वांटम यांत्रिकी के नियमों के तहत, सुपरपोज़्ड अवस्था के अंदर सीधे देखना संभव नहीं है। तो हम पूरी &amp;ldquo;अवधि&amp;rdquo; के बारे में वैश्विक जानकारी कैसे निकाल सकते हैं?&lt;/p>
&lt;h3 id="चरण-4-कवटम-फरयर-टरसफरम-qft-quantum-fourier-transform">चरण 4: क्वांटम फूरियर ट्रांसफॉर्म (QFT: Quantum Fourier Transform)
&lt;/h3>&lt;p>इस दीवार को तोड़ने वाले शोर के एल्गोरिदम का वास्तविक मूल्य पहले रजिस्टर में &lt;strong>क्वांटम फूरियर ट्रांसफॉर्म (QFT)&lt;/strong> का अनुप्रयोग है।&lt;/p>
&lt;p>मापने से पहले, फलन $ f(x) $ की तरंग प्रकृति का विश्लेषण करें। मान लीजिए कि हम दूसरे रजिस्टर का निरीक्षण करते हैं। मान लीजिए कि एक निश्चित मान $ y $ प्राप्त होता है। तब, पहले रजिस्टर की स्थिति &amp;ldquo;सभी $ x $ के सुपरपोजिशन में ढह जाती है जैसे कि $ a^x \pmod N = y $ &amp;ldquo;।
इस $ x $ के मान $ x_0, x_0 + r, x_0 + 2r, x_0 + 3r, \dots $ होंगे, जो अवधि $ r $ (एक प्रकार का कंघी जैसा संभाव्यता आयाम वितरण) के अंतराल पर अलग-अलग व्यवस्थित होते हैं।&lt;/p>
&lt;p>इस अवस्था में क्वांटम फूरियर ट्रांसफॉर्म (QFT) लागू करें। जिस तरह एक क्लासिकल असतत (discrete) फूरियर ट्रांसफॉर्म समय-डोमेन सिग्नल को आवृत्ति डोमेन में परिवर्तित करता है, QFT क्वांटम अवस्थाओं के संभाव्यता आयामों में हस्तक्षेप (interference) का कारण बनता है।&lt;/p>
&lt;p>जब QFT लागू किया जाता है, क्वांटम हस्तक्षेप प्रभाव के कारण, गलत उत्तरों की संभावनाएं जो अवधि $ r $ (चरण से बाहर) के साथ प्रतिध्वनित नहीं होती हैं, एक-दूसरे को रद्द कर देती हैं और शून्य (विनाशकारी हस्तक्षेप) तक पहुंच जाती हैं, और केवल अवधि $ r $ के बारे में जानकारी वाले सही उत्तर की संभावना बढ़ जाती है (रचनात्मक हस्तक्षेप)।&lt;/p>
&lt;h3 id="चरण-5-मपन-और-नरतर-अश-वसतर-शसतरय-पसट-परससग">चरण 5: मापन और निरंतर अंश विस्तार (शास्त्रीय पोस्ट-प्रोसेसिंग)
&lt;/h3>&lt;p>QFT को लागू करने के बाद पहले रजिस्टर को मापने से एक पूर्णांक $ c $ प्राप्त करने की बहुत अधिक संभावना होती है जो $ c \approx \frac{j \cdot 2^n}{r} $ के करीब है (जहाँ $ j $ एक अज्ञात पूर्णांक है और $ 2^n $ रजिस्टर का आकार है)।&lt;/p>
&lt;p>यह माप परिणाम $ c $ एक क्लासिकल कंप्यूटर पर लौटाया जाता है, और भिन्न $ \frac{c}{2^n} \approx \frac{j}{r} $ बनाया जाता है। फिर, गणितीय विधि &amp;ldquo;निरंतर अंश विस्तार&amp;rdquo; (Continued fraction expansion) का उपयोग करके अनुमानित मूल्य की गणना करके, हर (denominator) में अवधि $ r $ को शानदार ढंग से सामने लाया जा सकता है।&lt;/p>
&lt;p>एक बार $ r $ ज्ञात हो जाने के बाद, हम चरण 1 के सूत्र का उपयोग करके $ N $ के अभाज्य गुणनखंडों की गणना कर सकते हैं, और RSA एन्क्रिप्शन पूरी तरह से डिक्रिप्ट हो जाएगा।&lt;/p>
&lt;hr>
&lt;h2 id="वरतमन-कवटम-कपयटर-nisq-क-कषमतए-और-चनतय">वर्तमान क्वांटम कंप्यूटरों (NISQ) की क्षमताएं और चुनौतियाँ
&lt;/h2>&lt;p>सैद्धांतिक रूप से, शोर का एल्गोरिदम सही है, लेकिन अगर पूछा जाए, &amp;ldquo;क्या कल RSA एन्क्रिप्शन टूट जाएगा?&amp;rdquo; तो उत्तर स्पष्ट रूप से &amp;ldquo;नहीं&amp;rdquo; है। इसका कारण वर्तमान क्वांटम कंप्यूटर हार्डवेयर तकनीक की सीमाएं हैं।&lt;/p>
&lt;h3 id="nisq-noisy-intermediate-scale-quantum-यग">NISQ (Noisy Intermediate-Scale Quantum) युग
&lt;/h3>&lt;p>हम वर्तमान में &amp;ldquo;NISQ&amp;rdquo; नामक युग में हैं। NISQ उपकरणों में दसियों से सैकड़ों भौतिक क्यूबिट्स होते हैं, लेकिन शोर (noise) के प्रति बेहद संवेदनशील होते हैं।&lt;/p>
&lt;p>क्यूबिट्स बाहरी वातावरण जैसे गर्मी और विद्युत चुम्बकीय तरंगों के प्रभाव के प्रति संवेदनशील होते हैं, और &amp;ldquo;डिकोहेरेंस&amp;rdquo; (क्वांटम उलझाव का नुकसान) और गेट ऑपरेशन के दौरान &amp;ldquo;गेट त्रुटियां&amp;rdquo; अक्सर होती हैं, जिससे क्वांटम स्थिति नष्ट हो जाती है। जब शोर के एल्गोरिदम जैसे बहुत गहरे (बड़ी संख्या में गणना चरणों के साथ) क्वांटम सर्किट को निष्पादित करने का प्रयास किया जाता है, तो गणना के दौरान त्रुटियां जमा हो जाती हैं, और अंतिम आउटपुट पूर्ण शोर बन जाता है जिसका कोई अर्थ नहीं होता है।&lt;/p>
&lt;h3 id="भतक-कयबटस-और-तरकक-कयबटस">भौतिक क्यूबिट्स और तार्किक क्यूबिट्स
&lt;/h3>&lt;p>इस त्रुटि समस्या को हल करने के लिए &lt;strong>&amp;ldquo;क्वांटम त्रुटि सुधार&amp;rdquo; (Quantum Error Correction)&lt;/strong> आवश्यक है।
त्रुटि सुधार कोड का उपयोग शास्त्रीय कंप्यूटरों में भी किया जाता है, लेकिन &amp;ldquo;क्वांटम नो-क्लोनिंग प्रमेय&amp;rdquo; के कारण, जो क्वांटम अवस्थाओं की नकल को रोकता है, क्वांटम त्रुटि सुधार बहुत जटिल है।&lt;/p>
&lt;p>क्वांटम त्रुटि सुधार में, &amp;ldquo;सतह कोड&amp;rdquo; (Surface Code) जैसी तकनीकों का उपयोग बड़ी संख्या में शोर वाले &amp;ldquo;भौतिक क्यूबिट्स&amp;rdquo; को संयोजित करने के लिए किया जाता है ताकि त्रुटियों के बिना एक आदर्श &amp;ldquo;तार्किक क्यूबिट&amp;rdquo; (Logical qubit) बनाया जा सके।&lt;/p>
&lt;p>वर्तमान त्रुटि दरों को देखते हुए, यह अनुमान लगाया गया है कि एक तार्किक क्यूबिट बनाने के लिए लगभग 1,000 से 10,000 भौतिक क्यूबिट्स की आवश्यकता होगी। इसे &amp;ldquo;त्रुटि सुधार ओवरहेड&amp;rdquo; कहा जाता है।&lt;/p>
&lt;h3 id="rsa-2048-क-नषट-करन-क-लए-कन-ससधन-क-आवशयकत-ह">RSA-2048 को नष्ट करने के लिए किन संसाधनों की आवश्यकता है?
&lt;/h3>&lt;p>तो RSA-2048 को क्रैक करने के लिए शोर के एल्गोरिदम को चलाने के लिए वास्तव में कितने संसाधनों की आवश्यकता है?&lt;/p>
&lt;p>क्रेग गिडनी (Google) और मार्टिन एकेरा द्वारा 2021 के एक पेपर में ग्राउंडब्रेकिंग संसाधन अनुमान के अनुसार, अनुकूलित शोर के एल्गोरिदम का उपयोग करके और सतह कोड का उपयोग करके त्रुटि सुधार करने के लिए निम्नलिखित संसाधनों की आवश्यकता होगी:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>तार्किक क्यूबिट्स की संख्या&lt;/strong> : लगभग 4,096&lt;/li>
&lt;li>&lt;strong>भौतिक क्यूबिट्स की संख्या&lt;/strong> : &lt;strong>लगभग 20 मिलियन&lt;/strong> (त्रुटि दर $10^{-3}$ मानकर)&lt;/li>
&lt;li>&lt;strong>गणना का समय&lt;/strong> : लगभग 8 घंटे (लाखों से अरबों भौतिक गेट संचालन की आवश्यकता है)&lt;/li>
&lt;/ul>
&lt;p>इसकी तुलना में, वर्तमान क्वांटम हार्डवेयर की क्या स्थिति है?
सुपरकंडक्टिंग क्वांटम प्रोसेसर &amp;ldquo;कोंडोर&amp;rdquo;, जिसकी घोषणा 2023 के अंत में IBM द्वारा की गई थी, में 1,121 क्यूबिट्स हैं। इसके अलावा, तार्किक क्यूबिट्स के निर्माण पर ग्राउंडब्रेकिंग शोध (जैसे हार्वर्ड यूनिवर्सिटी और QuEra द्वारा तटस्थ परमाणु क्वांटम कंप्यूटर का उपयोग करके 48 तार्किक क्यूबिट्स का निर्माण) भी सामने आया है, लेकिन हम अभी तक उस स्तर पर नहीं हैं जहाँ &amp;ldquo;बिना शोर के सही गणना&amp;rdquo; लंबी अवधि के लिए लगातार निष्पादित की जा सके।&lt;/p>
&lt;p>हजारों भौतिक क्यूबिट्स से &lt;strong>20 मिलियन&lt;/strong> व्यावहारिक भौतिक क्यूबिट्स (जो परस्पर जुड़े हुए हैं, क्रायोजेनिक तापमान पर स्थिर रूप से काम करते हैं, और अति-उच्च गति पर नियंत्रण संकेतों को संसाधित कर सकते हैं) तक स्केल करने के लिए, इंजीनियरिंग में भारी बाधाएं (वायरिंग की समस्याएं, शीतलन क्षमता की सीमाएं, और नियंत्रण इलेक्ट्रॉनिक्स का विस्तार) मौजूद हैं। कई विशेषज्ञों का अनुमान है कि &amp;ldquo;दोष-सहिष्णु (Fault-tolerant) क्वांटम कंप्यूटर (FTQC)&amp;rdquo; को साकार करने में कम से कम 10 से 30 वर्ष या उससे अधिक का समय लगेगा जो RSA-2048 को डिक्रिप्ट कर सकता है।&lt;/p>
&lt;hr>
&lt;h2 id="store-now-decrypt-later-क-बढत-खतर-और-pqc-क-शरआत">&amp;ldquo;Store Now, Decrypt Later&amp;rdquo; का बढ़ता खतरा और PQC की शुरुआत
&lt;/h2>&lt;p>यह सोचना जल्दबाजी होगी कि &amp;ldquo;हम सुरक्षित हैं क्योंकि इसमें अभी 10 से अधिक साल लगेंगे।&amp;rdquo; वर्तमान में, ऐसा डेटा है जिसे राष्ट्रीय रहस्य, चिकित्सा डेटा और दीर्घकालिक बुनियादी ढांचे के डिजाइन जैसे दशकों तक गुप्त रखा जाना चाहिए।&lt;/p>
&lt;p>यहाँ जो चिंता का विषय है वह &lt;strong>&amp;ldquo;अभी स्टोर करें, बाद में डिक्रिप्ट करें&amp;rdquo; (Store Now, Decrypt Later)&lt;/strong> नामक हमला विधि है। दुर्भावनापूर्ण राष्ट्र और संगठन वर्तमान RSA या ECC (एलिप्टिक कर्व क्रिप्टोग्राफी) के साथ एन्क्रिप्ट किए गए सभी संचार डेटा को इंटरसेप्ट करते हैं और इसे स्टोरेज में सहेजते हैं। फिर, 10 या 20 साल बाद, जिस क्षण एक शक्तिशाली क्वांटम कंप्यूटर पूरा हो जाता है, वे शोर के एल्गोरिदम का उपयोग करके सभी पिछले डेटा को डिक्रिप्ट करते हैं और रहस्यों को उजागर करते हैं।&lt;/p>
&lt;p>इस समय अंतराल के खतरे का मुकाबला करने के लिए, NIST (राष्ट्रीय मानक और प्रौद्योगिकी संस्थान) के नेतृत्व में, &lt;strong>&amp;ldquo;पोस्ट-क्वांटम क्रिप्टोग्राफी&amp;rdquo; (PQC: Post-Quantum Cryptography)&lt;/strong> के मानकीकरण की प्रक्रिया तेज गति से आगे बढ़ रही है।&lt;/p>
&lt;p>PQC एक नया एन्क्रिप्शन एल्गोरिदम है जो गणितीय समस्याओं पर आधारित है जिन्हें क्वांटम कंप्यूटर का उपयोग करके हल करना मुश्किल है (यानी, शोर का एल्गोरिदम लागू नहीं किया जा सकता है)। मुख्य दृष्टिकोण इस प्रकार हैं:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>लैटिस-आधारित क्रिप्टोग्राफी (Lattice-based cryptography)&lt;/strong> : LWE (Learning with Errors) समस्या पर आधारित है। NIST के मानकीकरण में मुख्यधारा (Kyber, Dilithium, आदि)।&lt;/li>
&lt;li>&lt;strong>कोड-आधारित क्रिप्टोग्राफी (Code-based cryptography)&lt;/strong> : त्रुटि-सुधार कोड को डिकोड करने की कठिनाई पर निर्भर करता है।&lt;/li>
&lt;li>&lt;strong>बहुभिन्नरूपी बहुपद क्रिप्टोग्राफी (Multivariate cryptography)&lt;/strong> : कई चरों के एक साथ द्विघात समीकरणों को हल करने की कठिनाई पर निर्भर करता है।&lt;/li>
&lt;li>&lt;strong>हैश-आधारित हस्ताक्षर (Hash-based signatures)&lt;/strong> : डिजिटल हस्ताक्षर जो पूरी तरह से हैश फ़ंक्शंस की सुरक्षा पर निर्भर करते हैं।&lt;/li>
&lt;/ul>
&lt;p>Google Chrome और Apple के iMessage जैसे प्रमुख सॉफ़्टवेयर और प्लेटफ़ॉर्म ने पहले ही PQC का कार्यान्वयन परीक्षण और हाइब्रिड कार्यान्वयन शुरू कर दिया है।&lt;/p>
&lt;h2 id="नषकरष">निष्कर्ष
&lt;/h2>&lt;p>क्वांटम कंप्यूटर विज्ञान कथा की काल्पनिक दुनिया से वास्तविक इंजीनियरिंग चुनौतियों की ओर बढ़ रहे हैं। शोर का एल्गोरिदम मानवता की एक महान बौद्धिक उपलब्धि है जो गणित और क्वांटम यांत्रिकी को जोड़ती है, लेकिन साथ ही, इसमें हमारे डिजिटल समाज की नींव को हिला देने वाली &amp;ldquo;विनाशकारी शक्ति&amp;rdquo; है।&lt;/p>
&lt;p>RSA एन्क्रिप्शन कल अचानक अनुपयोगी नहीं हो जाएगा। हालाँकि, क्वांटम प्रौद्योगिकी के विकास और &amp;ldquo;अभी स्टोर करें, बाद में डिक्रिप्ट करें&amp;rdquo; के जोखिमों को देखते हुए, PQC में संक्रमण, क्रिप्टोग्राफी के इतिहास में एक बड़े पैमाने पर प्रवासन (migration), पहले ही शुरू हो चुका है। हम वर्तमान में सूचना सुरक्षा में एक प्रतिमान बदलाव (paradigm shift) में सबसे आगे गवाह हैं।&lt;/p></description></item><item><title>【संपूर्ण विश्लेषण】C++ में लागू करके सबसे शक्तिशाली क्रिप्टोग्राफी क्रैकिंग एल्गोरिदम "GNFS" को समझना</title><link>http://kenji.blog/hi/p/gnfs-cpp-implementation/</link><pubDate>Sat, 05 Sep 2026 13:04:59 +0900</pubDate><guid>http://kenji.blog/hi/p/gnfs-cpp-implementation/</guid><description>&lt;img src="http://kenji.blog/p/gnfs-cpp-implementation/gnfs_cpp_blog_eyecatch_1788580949217.jpg" alt="Featured image of post 【संपूर्ण विश्लेषण】C++ में लागू करके सबसे शक्तिशाली क्रिप्टोग्राफी क्रैकिंग एल्गोरिदम "GNFS" को समझना" />&lt;h1 id="सपरण-वशलषणc-म-लग-करक-सबस-शकतशल-करपटगरफ-करकग-एलगरदम-gnfs-क-समझन">【संपूर्ण विश्लेषण】C++ में लागू करके सबसे शक्तिशाली क्रिप्टोग्राफी क्रैकिंग एल्गोरिदम &amp;ldquo;GNFS&amp;rdquo; को समझना
&lt;/h1>&lt;p>आधुनिक इंटरनेट का आधार &amp;ldquo;RSA क्रिप्टोग्राफी&amp;rdquo; है। इसकी मजबूती इस गणितीय विश्वास पर निर्भर करती है कि &amp;ldquo;वर्तमान कंप्यूटरों के लिए एक विशाल भाज्य संख्या (composite number) का अभाज्य गुणनखंडन (prime factorization) करना लगभग असंभव है&amp;rdquo;।&lt;/p>
&lt;p>हालाँकि, मानवता ने कभी हार नहीं मानी है। वर्तमान में, क्लासिकल कंप्यूटरों (सामान्य कंप्यूटर, न कि क्वांटम कंप्यूटर) पर विशाल अभाज्य गुणनखंडन करने के लिए ** मानवता का सबसे शक्तिशाली और उन्नत एल्गोरिदम ** मौजूद है। वह है ** &amp;ldquo;सामान्य संख्या क्षेत्र चलनी (GNFS: General Number Field Sieve)&amp;rdquo; ** ।&lt;/p>
&lt;p>इस लेख में, हम इस GNFS के अत्याधुनिक संगणना लॉजिक को C++ (Boost लाइब्रेरी के मल्टीपल-प्रिसीजन इंटीजर &lt;code>boost::multiprecision&lt;/code> का उपयोग करके) में सख्ती से मॉडल किए गए कार्यान्वयन कोड को पूरी तरह से प्रकाशित करेंगे, और इसके पीछे &amp;ldquo;बीजीय संख्या सिद्धांत (Algebraic Number Theory)&amp;rdquo; की गहराइयों को विस्तार से समझाएंगे।&lt;/p>
&lt;p>कृपया स्रोत कोड के साथ गणित के रहस्य और कंप्यूटर विज्ञान की उस शक्ति का आनंद लें जो इसे मात देती है।&lt;/p>
&lt;hr>
&lt;h2 id="1-gnfs-अतयधनक-लजक-फरमवरक-सपरण-सरत-कड">1. GNFS अत्याधुनिक लॉजिक फ्रेमवर्क (संपूर्ण स्रोत कोड)
&lt;/h2>&lt;p>सबसे पहले, हम इस बार समझाए जाने वाले GNFS के C++ कार्यान्वयन का पूरा दृश्य प्रस्तुत करेंगे। वास्तविक संख्या क्षेत्र चलनी (जैसे CADO-NFS) लाखों पंक्तियों वाला एक विशाल वितरित सिस्टम है, लेकिन यह कोड GNFS को बनाने वाले ** &amp;ldquo;5 आवश्यक पाइपलाइनों (चरणों)&amp;rdquo; ** को निकालता है, उन्हें क्लास के रूप में डिज़ाइन करता है, और गणितीय अर्थ खोए बिना न्यूनतम कॉन्फ़िगरेशन के साथ मॉडल करता है।&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt"> 10
&lt;/span>&lt;span class="lnt"> 11
&lt;/span>&lt;span class="lnt"> 12
&lt;/span>&lt;span class="lnt"> 13
&lt;/span>&lt;span class="lnt"> 14
&lt;/span>&lt;span class="lnt"> 15
&lt;/span>&lt;span class="lnt"> 16
&lt;/span>&lt;span class="lnt"> 17
&lt;/span>&lt;span class="lnt"> 18
&lt;/span>&lt;span class="lnt"> 19
&lt;/span>&lt;span class="lnt"> 20
&lt;/span>&lt;span class="lnt"> 21
&lt;/span>&lt;span class="lnt"> 22
&lt;/span>&lt;span class="lnt"> 23
&lt;/span>&lt;span class="lnt"> 24
&lt;/span>&lt;span class="lnt"> 25
&lt;/span>&lt;span class="lnt"> 26
&lt;/span>&lt;span class="lnt"> 27
&lt;/span>&lt;span class="lnt"> 28
&lt;/span>&lt;span class="lnt"> 29
&lt;/span>&lt;span class="lnt"> 30
&lt;/span>&lt;span class="lnt"> 31
&lt;/span>&lt;span class="lnt"> 32
&lt;/span>&lt;span class="lnt"> 33
&lt;/span>&lt;span class="lnt"> 34
&lt;/span>&lt;span class="lnt"> 35
&lt;/span>&lt;span class="lnt"> 36
&lt;/span>&lt;span class="lnt"> 37
&lt;/span>&lt;span class="lnt"> 38
&lt;/span>&lt;span class="lnt"> 39
&lt;/span>&lt;span class="lnt"> 40
&lt;/span>&lt;span class="lnt"> 41
&lt;/span>&lt;span class="lnt"> 42
&lt;/span>&lt;span class="lnt"> 43
&lt;/span>&lt;span class="lnt"> 44
&lt;/span>&lt;span class="lnt"> 45
&lt;/span>&lt;span class="lnt"> 46
&lt;/span>&lt;span class="lnt"> 47
&lt;/span>&lt;span class="lnt"> 48
&lt;/span>&lt;span class="lnt"> 49
&lt;/span>&lt;span class="lnt"> 50
&lt;/span>&lt;span class="lnt"> 51
&lt;/span>&lt;span class="lnt"> 52
&lt;/span>&lt;span class="lnt"> 53
&lt;/span>&lt;span class="lnt"> 54
&lt;/span>&lt;span class="lnt"> 55
&lt;/span>&lt;span class="lnt"> 56
&lt;/span>&lt;span class="lnt"> 57
&lt;/span>&lt;span class="lnt"> 58
&lt;/span>&lt;span class="lnt"> 59
&lt;/span>&lt;span class="lnt"> 60
&lt;/span>&lt;span class="lnt"> 61
&lt;/span>&lt;span class="lnt"> 62
&lt;/span>&lt;span class="lnt"> 63
&lt;/span>&lt;span class="lnt"> 64
&lt;/span>&lt;span class="lnt"> 65
&lt;/span>&lt;span class="lnt"> 66
&lt;/span>&lt;span class="lnt"> 67
&lt;/span>&lt;span class="lnt"> 68
&lt;/span>&lt;span class="lnt"> 69
&lt;/span>&lt;span class="lnt"> 70
&lt;/span>&lt;span class="lnt"> 71
&lt;/span>&lt;span class="lnt"> 72
&lt;/span>&lt;span class="lnt"> 73
&lt;/span>&lt;span class="lnt"> 74
&lt;/span>&lt;span class="lnt"> 75
&lt;/span>&lt;span class="lnt"> 76
&lt;/span>&lt;span class="lnt"> 77
&lt;/span>&lt;span class="lnt"> 78
&lt;/span>&lt;span class="lnt"> 79
&lt;/span>&lt;span class="lnt"> 80
&lt;/span>&lt;span class="lnt"> 81
&lt;/span>&lt;span class="lnt"> 82
&lt;/span>&lt;span class="lnt"> 83
&lt;/span>&lt;span class="lnt"> 84
&lt;/span>&lt;span class="lnt"> 85
&lt;/span>&lt;span class="lnt"> 86
&lt;/span>&lt;span class="lnt"> 87
&lt;/span>&lt;span class="lnt"> 88
&lt;/span>&lt;span class="lnt"> 89
&lt;/span>&lt;span class="lnt"> 90
&lt;/span>&lt;span class="lnt"> 91
&lt;/span>&lt;span class="lnt"> 92
&lt;/span>&lt;span class="lnt"> 93
&lt;/span>&lt;span class="lnt"> 94
&lt;/span>&lt;span class="lnt"> 95
&lt;/span>&lt;span class="lnt"> 96
&lt;/span>&lt;span class="lnt"> 97
&lt;/span>&lt;span class="lnt"> 98
&lt;/span>&lt;span class="lnt"> 99
&lt;/span>&lt;span class="lnt">100
&lt;/span>&lt;span class="lnt">101
&lt;/span>&lt;span class="lnt">102
&lt;/span>&lt;span class="lnt">103
&lt;/span>&lt;span class="lnt">104
&lt;/span>&lt;span class="lnt">105
&lt;/span>&lt;span class="lnt">106
&lt;/span>&lt;span class="lnt">107
&lt;/span>&lt;span class="lnt">108
&lt;/span>&lt;span class="lnt">109
&lt;/span>&lt;span class="lnt">110
&lt;/span>&lt;span class="lnt">111
&lt;/span>&lt;span class="lnt">112
&lt;/span>&lt;span class="lnt">113
&lt;/span>&lt;span class="lnt">114
&lt;/span>&lt;span class="lnt">115
&lt;/span>&lt;span class="lnt">116
&lt;/span>&lt;span class="lnt">117
&lt;/span>&lt;span class="lnt">118
&lt;/span>&lt;span class="lnt">119
&lt;/span>&lt;span class="lnt">120
&lt;/span>&lt;span class="lnt">121
&lt;/span>&lt;span class="lnt">122
&lt;/span>&lt;span class="lnt">123
&lt;/span>&lt;span class="lnt">124
&lt;/span>&lt;span class="lnt">125
&lt;/span>&lt;span class="lnt">126
&lt;/span>&lt;span class="lnt">127
&lt;/span>&lt;span class="lnt">128
&lt;/span>&lt;span class="lnt">129
&lt;/span>&lt;span class="lnt">130
&lt;/span>&lt;span class="lnt">131
&lt;/span>&lt;span class="lnt">132
&lt;/span>&lt;span class="lnt">133
&lt;/span>&lt;span class="lnt">134
&lt;/span>&lt;span class="lnt">135
&lt;/span>&lt;span class="lnt">136
&lt;/span>&lt;span class="lnt">137
&lt;/span>&lt;span class="lnt">138
&lt;/span>&lt;span class="lnt">139
&lt;/span>&lt;span class="lnt">140
&lt;/span>&lt;span class="lnt">141
&lt;/span>&lt;span class="lnt">142
&lt;/span>&lt;span class="lnt">143
&lt;/span>&lt;span class="lnt">144
&lt;/span>&lt;span class="lnt">145
&lt;/span>&lt;span class="lnt">146
&lt;/span>&lt;span class="lnt">147
&lt;/span>&lt;span class="lnt">148
&lt;/span>&lt;span class="lnt">149
&lt;/span>&lt;span class="lnt">150
&lt;/span>&lt;span class="lnt">151
&lt;/span>&lt;span class="lnt">152
&lt;/span>&lt;span class="lnt">153
&lt;/span>&lt;span class="lnt">154
&lt;/span>&lt;span class="lnt">155
&lt;/span>&lt;span class="lnt">156
&lt;/span>&lt;span class="lnt">157
&lt;/span>&lt;span class="lnt">158
&lt;/span>&lt;span class="lnt">159
&lt;/span>&lt;span class="lnt">160
&lt;/span>&lt;span class="lnt">161
&lt;/span>&lt;span class="lnt">162
&lt;/span>&lt;span class="lnt">163
&lt;/span>&lt;span class="lnt">164
&lt;/span>&lt;span class="lnt">165
&lt;/span>&lt;span class="lnt">166
&lt;/span>&lt;span class="lnt">167
&lt;/span>&lt;span class="lnt">168
&lt;/span>&lt;span class="lnt">169
&lt;/span>&lt;span class="lnt">170
&lt;/span>&lt;span class="lnt">171
&lt;/span>&lt;span class="lnt">172
&lt;/span>&lt;span class="lnt">173
&lt;/span>&lt;span class="lnt">174
&lt;/span>&lt;span class="lnt">175
&lt;/span>&lt;span class="lnt">176
&lt;/span>&lt;span class="lnt">177
&lt;/span>&lt;span class="lnt">178
&lt;/span>&lt;span class="lnt">179
&lt;/span>&lt;span class="lnt">180
&lt;/span>&lt;span class="lnt">181
&lt;/span>&lt;span class="lnt">182
&lt;/span>&lt;span class="lnt">183
&lt;/span>&lt;span class="lnt">184
&lt;/span>&lt;span class="lnt">185
&lt;/span>&lt;span class="lnt">186
&lt;/span>&lt;span class="lnt">187
&lt;/span>&lt;span class="lnt">188
&lt;/span>&lt;span class="lnt">189
&lt;/span>&lt;span class="lnt">190
&lt;/span>&lt;span class="lnt">191
&lt;/span>&lt;span class="lnt">192
&lt;/span>&lt;span class="lnt">193
&lt;/span>&lt;span class="lnt">194
&lt;/span>&lt;span class="lnt">195
&lt;/span>&lt;span class="lnt">196
&lt;/span>&lt;span class="lnt">197
&lt;/span>&lt;span class="lnt">198
&lt;/span>&lt;span class="lnt">199
&lt;/span>&lt;span class="lnt">200
&lt;/span>&lt;span class="lnt">201
&lt;/span>&lt;span class="lnt">202
&lt;/span>&lt;span class="lnt">203
&lt;/span>&lt;span class="lnt">204
&lt;/span>&lt;span class="lnt">205
&lt;/span>&lt;span class="lnt">206
&lt;/span>&lt;span class="lnt">207
&lt;/span>&lt;span class="lnt">208
&lt;/span>&lt;span class="lnt">209
&lt;/span>&lt;span class="lnt">210
&lt;/span>&lt;span class="lnt">211
&lt;/span>&lt;span class="lnt">212
&lt;/span>&lt;span class="lnt">213
&lt;/span>&lt;span class="lnt">214
&lt;/span>&lt;span class="lnt">215
&lt;/span>&lt;span class="lnt">216
&lt;/span>&lt;span class="lnt">217
&lt;/span>&lt;span class="lnt">218
&lt;/span>&lt;span class="lnt">219
&lt;/span>&lt;span class="lnt">220
&lt;/span>&lt;span class="lnt">221
&lt;/span>&lt;span class="lnt">222
&lt;/span>&lt;span class="lnt">223
&lt;/span>&lt;span class="lnt">224
&lt;/span>&lt;span class="lnt">225
&lt;/span>&lt;span class="lnt">226
&lt;/span>&lt;span class="lnt">227
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-cpp" data-lang="cpp">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;iostream&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;vector&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;cmath&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;map&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;set&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;chrono&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;boost/multiprecision/cpp_int.hpp&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Boost.Multiprecision के मल्टीपल-प्रिसीजन इंटीजर का उपयोग
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="k">using&lt;/span> &lt;span class="k">namespace&lt;/span> &lt;span class="n">boost&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">multiprecision&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ============================================================================
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// [SOTA GNFS] General Number Field Sieve (सामान्य संख्या क्षेत्र चलनी) अत्याधुनिक लॉजिक फ्रेमवर्क
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">//
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// यह कोड CADO-NFS आदि में उपयोग किए जाने वाले अत्याधुनिक GNFS के 5 पाइपलाइनों को
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// C++ (Boost) क्लास डिज़ाइन के रूप में सख्ती से मॉडल करता है।
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ============================================================================
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">struct&lt;/span> &lt;span class="nc">Relation&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">int64_t&lt;/span> &lt;span class="n">a&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">int64_t&lt;/span> &lt;span class="n">b&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="kt">uint32_t&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">rational_primes&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="kt">uint32_t&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">algebraic_primes&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ============================================================================
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Phase 1: Polynomial Selection (KleinJung का एल्गोरिदम)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ============================================================================
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="k">class&lt;/span> &lt;span class="nc">PolynomialSelector&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">public&lt;/span>&lt;span class="o">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">int&lt;/span> &lt;span class="n">degree&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">cpp_int&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">f&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="c1">// बीजीय पक्ष बहुपद f(x)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">cpp_int&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">g&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="c1">// परिमेय पक्ष बहुपद g(x) = x - m
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">cpp_int&lt;/span> &lt;span class="n">m&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">PolynomialSelector&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span> &lt;span class="n">d&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">:&lt;/span> &lt;span class="n">degree&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">d&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// base-m विस्तार के आधार पर प्रारंभिक बहुपद का निर्माण (वास्तव में अधिक उन्नत जालक आधार न्यूनीकरण LLL का उपयोग किया जाता है)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="kt">void&lt;/span> &lt;span class="nf">select&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="n">cpp_int&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;[Phase 1] Polynomial Selection (Degree &amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">degree&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;) starting...&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// सरल base-m विस्तार (d घात)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// m = N^(1/d)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">cpp_int&lt;/span> &lt;span class="n">N_copy&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">m&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// सरल m का अनुमान (Boost फ़ंक्शन के बिना अनुमान)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">cpp_int&lt;/span> &lt;span class="n">low&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">high&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">while&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">low&lt;/span> &lt;span class="o">&amp;lt;=&lt;/span> &lt;span class="n">high&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">cpp_int&lt;/span> &lt;span class="n">mid&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">low&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">high&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="n">low&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">/&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">cpp_int&lt;/span> &lt;span class="n">p&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span> &lt;span class="n">i&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">i&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">degree&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="o">++&lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="n">p&lt;/span> &lt;span class="o">*=&lt;/span> &lt;span class="n">mid&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">p&lt;/span> &lt;span class="o">&amp;lt;=&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="n">m&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">mid&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">low&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">mid&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">else&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="n">high&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">mid&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">f&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">resize&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">degree&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">cpp_int&lt;/span> &lt;span class="n">temp&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">&amp;lt;=&lt;/span> &lt;span class="n">degree&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="o">++&lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">f&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">temp&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="n">m&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">temp&lt;/span> &lt;span class="o">/=&lt;/span> &lt;span class="n">m&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">g&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">m&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">};&lt;/span> &lt;span class="c1">// g(x) = x - m
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34; -&amp;gt; m = &amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">m&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34; -&amp;gt; f(x) = &amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">degree&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">&amp;gt;=&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="o">--&lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">f&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;x^&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">i&lt;/span> &lt;span class="o">&amp;gt;&lt;/span> &lt;span class="mi">0&lt;/span> &lt;span class="o">?&lt;/span> &lt;span class="s">&amp;#34; + &amp;#34;&lt;/span> &lt;span class="o">:&lt;/span> &lt;span class="s">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s">[Phase 1] Complete.&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ============================================================================
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Phase 2: Lattice Sieving (जालक चलनी)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ============================================================================
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// हाल के वर्षों में GNFS में Line Sieve (सरल रेखा चलनी) के बजाय Franke-Kleinjung आदि द्वारा
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Special-q Lattice Sieving (विशेष-q जालक चलनी) का उपयोग करना डिफ़ॉल्ट मानक है।
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="k">class&lt;/span> &lt;span class="nc">LatticeSieve&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">uint32_t&lt;/span> &lt;span class="n">rational_bound&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">uint32_t&lt;/span> &lt;span class="n">algebraic_bound&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="kt">uint32_t&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">rational_fb&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="kt">uint32_t&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">algebraic_fb&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">public&lt;/span>&lt;span class="o">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">LatticeSieve&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kt">uint32_t&lt;/span> &lt;span class="n">rb&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="kt">uint32_t&lt;/span> &lt;span class="n">ab&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">:&lt;/span> &lt;span class="n">rational_bound&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">rb&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="n">algebraic_bound&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">ab&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">void&lt;/span> &lt;span class="nf">generate_factor_bases&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;[Phase 2] Generating Factor Bases (Rational Bound: &amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">rational_bound&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;, Algebraic Bound: &amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">algebraic_bound&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;)&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// (छोड़ा गया) वास्तव में अभाज्य संख्या निर्माण और लेजेंड्रे प्रतीक आदि से फ़िल्टरिंग की जाती है
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">Relation&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">sieve&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="n">PolynomialSelector&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">poly&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;[Phase 2] Special-q Lattice Sieving active...&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">Relation&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">relations&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// मॉक कार्यान्वयन: वास्तविक जालक चलनी सैकड़ों GB मेमोरी स्पेस को ब्लॉक द्वारा स्कैन करती है
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// (a, b) युग्मों को विशेष अभाज्य q के जालक (a = i*q + j*...) में मैप करती है,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// और कैश दक्षता को अधिकतम करने वाली चलनी (sieve) चलाती है।
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// डेमो के लिए एक डमी रिलेशन जोड़ा गया
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">Relation&lt;/span> &lt;span class="n">r&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">r&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">a&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">17&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">r&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">b&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">3&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">r&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">rational_primes&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">5&lt;/span>&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">r&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">algebraic_primes&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="mi">3&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">7&lt;/span>&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">relations&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">push_back&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">r&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;[Phase 2] Found &amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">relations&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">size&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34; relations.&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">relations&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ============================================================================
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Phase 3: Filtering (सिंगलटन रिमूवल और क्लीक मर्जिंग)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ============================================================================
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="k">class&lt;/span> &lt;span class="nc">Filter&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">public&lt;/span>&lt;span class="o">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">void&lt;/span> &lt;span class="n">reduce_matrix&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">Relation&lt;/span>&lt;span class="o">&amp;gt;&amp;amp;&lt;/span> &lt;span class="n">relations&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;[Phase 3] Filtering Relations...&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 1. Singleton removal (केवल 1 बार आने वाले अभाज्य संख्या वाले रिलेशन को हटाना)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// 2. Clique merging (विरल मैट्रिक्स को सघन बनाने के लिए रिलेशन को मिलाना)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// वास्तव में यूनियन-फाइंड एल्गोरिदम आदि द्वारा करोड़ों पंक्तियों वाले मैट्रिक्स को लाखों पंक्तियों में संकुचित किया जाता है।
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;[Phase 3] Matrix size reduced optimally.&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ============================================================================
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Phase 4: Linear Algebra over GF(2) (Block Wiedemann विधि)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ============================================================================
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="k">class&lt;/span> &lt;span class="nc">LinearAlgebraGF2&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">public&lt;/span>&lt;span class="o">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// हाल के सुपरकंप्यूटर वातावरण में Block Lanczos विधि की तुलना में, वितरित कंप्यूटिंग के लिए
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// अधिक उपयुक्त Block Wiedemann विधि (Coppersmith कार्यान्वयन) को अत्याधुनिक माना जाता है।
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="kt">int&lt;/span>&lt;span class="o">&amp;gt;&amp;gt;&lt;/span> &lt;span class="n">solve_nullspace&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">Relation&lt;/span>&lt;span class="o">&amp;gt;&amp;amp;&lt;/span> &lt;span class="n">relations&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;[Phase 4] Block Wiedemann algorithm over GF(2) starting...&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// विरल मैट्रिक्स (sparse matrix) और वेक्टर के गुणन की पुनरावृत्ति करके,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// M * x = 0 mod 2 को संतुष्ट करने वाले कई हल वेक्टर (कर्नेल) खोजना।
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="kt">int&lt;/span>&lt;span class="o">&amp;gt;&amp;gt;&lt;/span> &lt;span class="n">dependencies&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="c1">// निर्भरता की सूची
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// डमी डेटा
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">dependencies&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">push_back&lt;/span>&lt;span class="p">({&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">});&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;[Phase 4] Found &amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">dependencies&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">size&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34; linear dependencies (perfect squares).&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">dependencies&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ============================================================================
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Phase 5: Algebraic Square Root (बीजीय वर्गमूल)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ============================================================================
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="k">class&lt;/span> &lt;span class="nc">AlgebraicSquareRoot&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">public&lt;/span>&lt;span class="o">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">void&lt;/span> &lt;span class="n">compute_and_factor&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">Relation&lt;/span>&lt;span class="o">&amp;gt;&amp;amp;&lt;/span> &lt;span class="n">relations&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="k">const&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="kt">int&lt;/span>&lt;span class="o">&amp;gt;&amp;amp;&lt;/span> &lt;span class="n">dep&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="k">const&lt;/span> &lt;span class="n">cpp_int&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;[Phase 5] Algebraic Square Root computation...&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 1. परिमेय पक्ष का वर्गमूल V की गणना (सरल पूर्णांक गणना)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">cpp_int&lt;/span> &lt;span class="n">V&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// V = sqrt( prod(a - bm) ) mod N
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 2. बीजीय पक्ष का वर्गमूल gamma की गणना (Montgomery&amp;#39;s method आदि)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// विशाल बीजीय क्षेत्र O_K का तत्व gamma ज्ञात करना, और समरूपता (homomorphism) phi द्वारा वास्तविक दुनिया में मैप करना
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// Y = phi(gamma) mod N
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">cpp_int&lt;/span> &lt;span class="n">Y&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// आदर्श वर्ग समूह (Ideal Class Group) और इकाई समूह (Unit Group) की बाधाओं (Obstruction) से बचने के लिए,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// यह मानकर चलते हैं कि Phase 2 और 4 में द्विघाती वर्णों (Quadratic Characters) की पंक्तियाँ जोड़ी गई हैं।
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34; -&amp;gt; Homomorphism map phi applied.&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;[Phase 5] Calculating GCD(V - Y, N)...&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">cpp_int&lt;/span> &lt;span class="n">factor&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">gcd&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">V&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="n">Y&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">);&lt;/span> &lt;span class="c1">// GCD(X-Y, N)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">factor&lt;/span> &lt;span class="o">&amp;gt;&lt;/span> &lt;span class="mi">1&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="n">factor&lt;/span> &lt;span class="o">&amp;lt;&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s">================================================================&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;[SUCCESS] Non-trivial factor found: &amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">factor&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34; Other factor: &amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">N&lt;/span> &lt;span class="o">/&lt;/span> &lt;span class="n">factor&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;================================================================&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span> &lt;span class="k">else&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;[FAILURE] Trivial solution. Trying next dependency...&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ============================================================================
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Main Execution Pipeline
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ============================================================================
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="kt">int&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;================================================================&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34; [SOTA GNFS] General Number Field Sieve Engine (Boost C++) &amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;================================================================&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// RSA-270 आदि, विशाल भाज्य संख्या N जिसका गुणनखंडन करना है
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">cpp_int&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;233108530344407544527637656910680524145619812480305449042948611968495918245135782867888369318577116418213919268572658314913060672626911354027609793166341626693946596196427744273886601876896313468704059066746903123910748277606548649151920812699309766587514735456594993207&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// बहुपद की घात (130 अंकों से अधिक होने पर आमतौर पर 5 या 6 चुनी जाती है)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="kt">int&lt;/span> &lt;span class="n">degree&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">6&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// पाइपलाइन इनिशियलाइज़ेशन
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">PolynomialSelector&lt;/span> &lt;span class="n">poly_select&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">degree&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">LatticeSieve&lt;/span> &lt;span class="n">sieve&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">10000000&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">20000000&lt;/span>&lt;span class="p">);&lt;/span> &lt;span class="c1">// वास्तविक सीमाएँ करोड़ों में होती हैं
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">Filter&lt;/span> &lt;span class="n">filter&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">LinearAlgebraGF2&lt;/span> &lt;span class="n">linalg&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">AlgebraicSquareRoot&lt;/span> &lt;span class="n">sqrt_step&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">auto&lt;/span> &lt;span class="n">start_time&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">chrono&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">high_resolution_clock&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">now&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 1. बहुपद चयन
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">poly_select&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">select&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">N&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 2. चलनी (sieve) प्रसंस्करण
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">sieve&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">generate_factor_bases&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">Relation&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">relations&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">sieve&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">sieve&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">poly_select&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 3. फ़िल्टरिंग (मैट्रिक्स संपीड़न)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">filter&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">reduce_matrix&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">relations&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 4. रेखीय बीजगणित (GF(2) पर शून्यस्थान खोज)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="kt">int&lt;/span>&lt;span class="o">&amp;gt;&amp;gt;&lt;/span> &lt;span class="n">dependencies&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">linalg&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">solve_nullspace&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">relations&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 5. बीजीय वर्गमूल की गणना और GCD
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="k">auto&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="nl">dep&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="n">dependencies&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">sqrt_step&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">compute_and_factor&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">relations&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">dep&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">auto&lt;/span> &lt;span class="n">end_time&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">chrono&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">high_resolution_clock&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">now&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">chrono&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">duration&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="kt">double&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">elapsed&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">end_time&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="n">start_time&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s">[System] SOTA GNFS Pipeline completed in &amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">elapsed&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">count&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34; seconds.&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>तो यह कोड क्रिप्टोग्राफी की दीवारों को कैसे तोड़ता है? आइए इन 5 चरणों में से प्रत्येक के पीछे के सटीक एल्गोरिदम और उन्नत गणित को विस्तार से समझें।&lt;/p>
&lt;hr>
&lt;h2 id="2-gnfs-क-अतम-लकषय-x2-equiv-y2-pmod-n">2. GNFS का अंतिम लक्ष्य: $X^2 \equiv Y^2 \pmod N$
&lt;/h2>&lt;p>GNFS ही नहीं, बल्कि लगभग सभी आधुनिक विशाल अभाज्य गुणनखंडन एल्गोरिदम का लक्ष्य एक ऐसा गैर-तुच्छ (non-trivial) युग्म $(X, Y)$ खोजना है जो निम्नलिखित सर्वांगसमता (congruence) को संतुष्ट करता हो:&lt;/p>
$$X^2 \equiv Y^2 \pmod N$$
&lt;p>इस समीकरण का अर्थ है कि &amp;ldquo;$X^2$ और $Y^2$ को $N$ से विभाजित करने पर शेषफल समान होता है&amp;rdquo;। यदि हम इसे रूपांतरित करें, तो:
$X^2 - Y^2 \equiv 0 \pmod N$
अर्थात, $(X-Y)(X+Y)$, $N$ का गुणज है।&lt;/p>
&lt;p>यदि $X \not\equiv \pm Y \pmod N$ (गैर-तुच्छ हल) है, तो $(X-Y)$ और $N$ के बीच &amp;ldquo;1 से बड़ा और $N$ से छोटा एक सार्व भाजक (common divisor)&amp;rdquo; मौजूद होगा।
यहाँ, यदि हम यूक्लिड के एल्गोरिदम का उपयोग करके ** $\gcd(X-Y, N)$ ** की गणना करते हैं, तो $N$ का अभाज्य गुणनखंड आसानी से मिल जाएगा।&lt;/p>
&lt;p>हालाँकि, इस $X$ और $Y$ को खोजना रेगिस्तान में सुई खोजने जैसा है। इसलिए, GNFS &amp;ldquo;वास्तविक पूर्णांकों की दुनिया&amp;rdquo; और &amp;ldquo;बहुपदों की बीजीय दुनिया&amp;rdquo; नामक ** 2 दुनियाएँ ** बनाने और संगणना को वितरित करने का एक प्रतिभाशाली दृष्टिकोण अपनाता है।&lt;/p>
&lt;hr>
&lt;h2 id="3-phase-1-बहपद-चयन-polynomial-selection">3. Phase 1: बहुपद चयन (Polynomial Selection)
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-cpp" data-lang="cpp">&lt;span class="line">&lt;span class="cl">&lt;span class="k">class&lt;/span> &lt;span class="nc">PolynomialSelector&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// ...
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="kt">void&lt;/span> &lt;span class="nf">select&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="n">cpp_int&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// m = N^(1/d) की गणना और base-m विस्तार
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// ...
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">&amp;lt;=&lt;/span> &lt;span class="n">degree&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="o">++&lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">f&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">temp&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="n">m&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">temp&lt;/span> &lt;span class="o">/=&lt;/span> &lt;span class="n">m&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">g&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">m&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">};&lt;/span> &lt;span class="c1">// g(x) = x - m
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>GNFS का पहला कदम दोनों दुनियाओं को जोड़ने के लिए एक &amp;ldquo;जादुई बहुपद&amp;rdquo; बनाना है।
एक विशाल संख्या $N$ के लिए, हम एक पूर्णांक $m$ चुनते हैं। आमतौर पर, हम इसे इस तरह चुनते हैं कि $m \approx N^{1/d}$ हो (कोड में $d=6$ घात के बहुपद की कल्पना की गई है)।&lt;/p>
&lt;p>फिर, हम $N$ का $m$-आधार विस्तार करते हैं, और इसके गुणांकों का उपयोग करके बहुपद $f(x)$ का निर्माण करते हैं।
&lt;/p>
$$N = c_d m^d + c_{d-1} m^{d-1} + \dots + c_1 m + c_0$$
$$f(x) = c_d x^d + c_{d-1} x^{d-1} + \dots + c_1 x + c_0$$
&lt;p>इस बहुपद $f(x)$ में एक अत्यंत महत्वपूर्ण गुण है कि ** &amp;ldquo;चर $x$ में $m$ रखने पर, यह ठीक $N$ बन जाता है ($f(m) = N$)&amp;rdquo; ** । दूसरे शब्दों में, $f(m) \equiv 0 \pmod N$।
परिमेय पक्ष के बहुपद को $g(x) = x - m$ के रूप में परिभाषित किया जाता है।&lt;/p>
&lt;p>इसके कारण, $f(x)=0$ के मूल $\alpha$ द्वारा शासित ** &amp;ldquo;बीजीय क्षेत्र की दुनिया $\mathbb{Z}[\alpha]$&amp;rdquo; ** और सामान्य ** &amp;ldquo;परिमेय (पूर्णांक) संख्याओं की दुनिया $\mathbb{Z}$&amp;rdquo; ** को $x \to m$ नामक &amp;ldquo;रिंग होमोमोर्फिज्म (Ring Homomorphism)&amp;rdquo; द्वारा दृढ़ता से जोड़ा जाता है।&lt;/p>
&lt;p>अत्याधुनिक CADO-NFS आदि में, KleinJung एल्गोरिदम या LLL जालक आधार न्यूनीकरण एल्गोरिदम का उपयोग महीनों तक ऐसे &amp;ldquo;सबसे सुविधाजनक बहुपद $f(x)$&amp;rdquo; की खोज के लिए किया जाता है जिसके गुणांक बहुत बड़े नहीं होते हैं और बाद के चरणों में अभाज्य संख्याएँ उत्पन्न होने की अधिक संभावना होती है (अर्थात स्मूथ होने की संभावना अधिक होती है)।&lt;/p>
&lt;hr>
&lt;h2 id="4-phase-2-वशष-q-जलक-चलन-special-q-lattice-sieving">4. Phase 2: विशेष $q$ जालक चलनी (Special-q Lattice Sieving)
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-cpp" data-lang="cpp">&lt;span class="line">&lt;span class="cl">&lt;span class="k">class&lt;/span> &lt;span class="nc">LatticeSieve&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// ...
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">Relation&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">sieve&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="n">PolynomialSelector&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">poly&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// ...
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// (a, b) युग्मों को विशेष अभाज्य q के जालक में मैप करता है,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// और कैश दक्षता को अधिकतम करने वाली चलनी (sieve) चलाता है।
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// ...
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>एक बार जब दोनों दुनियाएँ तैयार हो जाती हैं, तो अगला कदम उन दोनों दुनियाओं में &amp;ldquo;स्मूथ संख्याएँ (केवल छोटी अभाज्य संख्याओं से बनी संख्याएँ)&amp;rdquo; खोजना है।
पूर्णांक युग्मों $(a, b)$ की अनगिनत संख्या उत्पन्न की जाती है, और निम्नलिखित दो मानों की गणना की जाती है:&lt;/p>
&lt;ol>
&lt;li>** परिमेय पक्ष का मान ** : $a - bm$&lt;/li>
&lt;li>** बीजीय पक्ष का नॉर्म ** : $b^d f(a/b)$&lt;/li>
&lt;/ol>
&lt;p>GNFS का लक्ष्य ऐसे ** &amp;ldquo;युग्मों (Relation: संबंध) को करोड़ों की संख्या में इकट्ठा करना है जहाँ परिमेय और बीजीय दोनों मानों को पूरी तरह से केवल छोटे अभाज्य कारकों में विभाजित किया जा सकता है&amp;rdquo; ** ।&lt;/p>
&lt;p>शुरुआती GNFS में, एक &amp;ldquo;सरल रेखा चलनी (Line Sieve)&amp;rdquo; का उपयोग किया जाता था जो $(a, b)$ को $xy$-तल पर रखता था और उन्हें एक सिरे से अभाज्य संख्याओं द्वारा क्रमिक रूप से विभाजित करता था। हालाँकि, इसमें मेमोरी के कई स्थानों तक पहुँचने के कारण लगातार कैश मिस होने और बहुत धीमा होने की कमजोरी थी।&lt;/p>
&lt;p>इसलिए, वर्तमान अत्याधुनिक कोड में ** &amp;ldquo;विशेष $q$ जालक चलनी (Special-q Lattice Sieve)&amp;rdquo; ** नामक तकनीक का उपयोग किया जाता है।
एक उपयुक्त रूप से बड़ी अभाज्य संख्या $q$ तय की जाती है, और केवल उन $(a, b)$ युग्मों की गणना की जाती है जहाँ &amp;ldquo;बीजीय पक्ष का मान निश्चित रूप से $q$ द्वारा विभाज्य है&amp;rdquo;। इस शर्त को पूरा करने वाले $(a, b)$ तल पर एक &amp;ldquo;जालक (Lattice)&amp;rdquo; बनाते हैं, इसलिए गणना करने के लिए पतों की जंप की चौड़ाई स्थिर हो जाती है, जो CPU के L1/L2 कैश में पूरी तरह से फिट बैठती है।
इस जालक चलनी की शुरुआत के साथ, GNFS की गणना गति में नाटकीय रूप से सुधार हुआ।&lt;/p>
&lt;hr>
&lt;h2 id="5-phase-3-फलटरग-filtering">5. Phase 3: फ़िल्टरिंग (Filtering)
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-cpp" data-lang="cpp">&lt;span class="line">&lt;span class="cl">&lt;span class="k">class&lt;/span> &lt;span class="nc">Filter&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">public&lt;/span>&lt;span class="o">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">void&lt;/span> &lt;span class="n">reduce_matrix&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">Relation&lt;/span>&lt;span class="o">&amp;gt;&amp;amp;&lt;/span> &lt;span class="n">relations&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 1. Singleton removal (केवल 1 बार आने वाले अभाज्य संख्या वाले रिलेशन को हटाना)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// 2. Clique merging (विरल मैट्रिक्स को सघन बनाने के लिए रिलेशन को मिलाना)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Phase 2 में दुनिया भर के कंप्यूटरों द्वारा महीनों तक एकत्र किए गए करोड़ों रिलेशन। हालाँकि, अगर हम इसे ऐसे ही अगले &amp;ldquo;युगपत समीकरणों को हल करने वाले चरण (मैट्रिक्स गणना)&amp;rdquo; में डाल देते हैं, तो सुपरकंप्यूटर की मेमोरी भर जाएगी।&lt;/p>
&lt;p>इसलिए, ** फ़िल्टरिंग (Filtering) ** नामक एक अति-संपीड़न प्रक्रिया की जाती है।&lt;/p>
&lt;ol>
&lt;li>
&lt;p>** Singleton removal (सिंगलटन रिमूवल) **
मान लें कि करोड़ों रिलेशन में कोई विशाल अभाज्य संख्या $p$ &amp;ldquo;केवल 1 बार&amp;rdquo; आती है। हमारा लक्ष्य &amp;ldquo;सभी अभाज्य संख्याओं के घातांकों को सम (2 का गुणज) बनाना&amp;rdquo; है, इसलिए जो अभाज्य संख्या केवल 1 बार आती है उसे कभी सम नहीं किया जा सकता।
इसलिए, उस अभाज्य संख्या वाले रिलेशन को तुरंत &amp;ldquo;कचरा&amp;rdquo; मानकर हटा (पर्ज) दिया जाता है। चूँकि यह एक श्रृंखला प्रतिक्रिया में होता है, करोड़ों पंक्तियों वाला डेटा तेज़ी से कम हो जाता है।&lt;/p>
&lt;/li>
&lt;li>
&lt;p>** Clique merging (क्लीक मर्जिंग) **
इसके अलावा, एक विशिष्ट अभाज्य संख्या साझा करने वाले रिलेशन को एक साथ गुणा करके (जोड़कर), पंक्तियों की संख्या कम हो जाती है, जबकि एक विरल (sparse) मैट्रिक्स को सघन स्थिति में संकुचित किया जाता है (ग्राफ सिद्धांत में क्लीक सर्च के समान एक विधि का उपयोग किया जाता है)।&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>इस अनुकूलन के साथ, विशाल विरल मैट्रिक्स को गणना योग्य आकार में नाटकीय रूप से संकुचित किया जाता है।&lt;/p>
&lt;hr>
&lt;h2 id="6-phase-4-gf2-पर-रखय-बजगणत-block-wiedemann-वध">6. Phase 4: GF(2) पर रेखीय बीजगणित (Block Wiedemann विधि)
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-cpp" data-lang="cpp">&lt;span class="line">&lt;span class="cl">&lt;span class="k">class&lt;/span> &lt;span class="nc">LinearAlgebraGF2&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">public&lt;/span>&lt;span class="o">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="kt">int&lt;/span>&lt;span class="o">&amp;gt;&amp;gt;&lt;/span> &lt;span class="n">solve_nullspace&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">Relation&lt;/span>&lt;span class="o">&amp;gt;&amp;amp;&lt;/span> &lt;span class="n">relations&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// विरल मैट्रिक्स (sparse matrix) और वेक्टर के गुणन की पुनरावृत्ति करके,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// M * x = 0 mod 2 को संतुष्ट करने वाले कई हल वेक्टर (कर्नेल) खोजना।
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>यह पहेली का मूल है।
हम एकत्र किए गए रिलेशन को गुणा करते हैं ताकि ** &amp;ldquo;ऐसे संयोजन को खोज सकें जहाँ सभी अभाज्य कारकों के घातांक सम हो जाते हैं&amp;rdquo; ** ।&lt;/p>
&lt;p>गणितीय रूप से, यह एक विशाल मैट्रिक्स $M$ जिसमें प्रत्येक अभाज्य संख्या के घातांक की &amp;ldquo;सम/विषम (यानी 0 या 1)&amp;rdquo; स्थिति होती है, और यह दर्शाने वाला एक वेक्टर $x$ कि किन रिलेशन का उपयोग किया जाए, का उपयोग करके:
** $M \cdot x \equiv 0 \pmod 2$ **
संतुष्ट करने वाले हल वेक्टर $x$ (शून्यस्थान / कर्नेल) को खोजने के अलावा और कुछ नहीं है।&lt;/p>
&lt;p>हमें लाखों पंक्तियों × लाखों स्तंभों वाले मैट्रिक्स के युगपत समीकरणों को हल करना होगा। सामान्य गाऊसी उन्मूलन (Gaussian elimination) से गणना की जटिलता $O(N^3)$ हो जाएगी, और गणना ब्रह्मांड के अंत तक भी समाप्त नहीं होगी।&lt;/p>
&lt;p>इसलिए, अत्याधुनिक कार्यान्वयन ** &amp;ldquo;Block Wiedemann (ब्लॉक विडमैन) विधि&amp;rdquo; ** को अपनाता है।
यह क्रिलोव सबस्पेस विधि का एक प्रकार है जो इस तथ्य का लाभ उठाता है कि मैट्रिक्स $M$ &amp;ldquo;अत्यंत विरल (लगभग सभी 0)&amp;rdquo; है, और मैट्रिक्स और वेक्टर के गुणन को बार-बार करके हल निकालता है।
पुरानी Block Lanczos विधि के विपरीत, Block Wiedemann विधि गणना प्रक्रिया को पूरी तरह से कई क्लस्टरों में विभाजित कर सकती है, इसलिए यह आधुनिक वितरित क्लाउड कंप्यूटिंग और सुपरकंप्यूटर पर समानांतर गणना में अत्यधिक शक्तिशाली है।&lt;/p>
&lt;hr>
&lt;h2 id="7-phase-5-बजय-वरगमल-algebraic-square-root-और-करपटगरफ-क-पतन">7. Phase 5: बीजीय वर्गमूल (Algebraic Square Root) और क्रिप्टोग्राफी का पतन
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-cpp" data-lang="cpp">&lt;span class="line">&lt;span class="cl">&lt;span class="k">class&lt;/span> &lt;span class="nc">AlgebraicSquareRoot&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">public&lt;/span>&lt;span class="o">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">void&lt;/span> &lt;span class="n">compute_and_factor&lt;/span>&lt;span class="p">(...)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 1. परिमेय पक्ष का वर्गमूल V की गणना
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">cpp_int&lt;/span> &lt;span class="n">V&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 2. बीजीय पक्ष का वर्गमूल gamma की गणना
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">cpp_int&lt;/span> &lt;span class="n">Y&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// ...
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">cpp_int&lt;/span> &lt;span class="n">factor&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">gcd&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">V&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="n">Y&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">);&lt;/span> &lt;span class="c1">// GCD(X-Y, N)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Phase 4 में मैट्रिक्स गणनाओं के माध्यम से, हमने &amp;ldquo;रिलेशन का एक सेट $S$ प्राप्त किया है जो, जब गुणा किया जाता है, तो सभी अभाज्य कारकों की सम घात में परिणत होता है&amp;rdquo;।
यह हमें परिमेय और बीजीय दोनों दुनियाओं में &amp;ldquo;वर्ग (Squares)&amp;rdquo; बनाने की अनुमति देता है।&lt;/p>
&lt;p>चूँकि परिमेय पक्ष केवल पूर्णांक गुणन है, इसलिए वर्गमूल $V$ की गणना करना आसान है।
&lt;/p>
$$V^2 = \prod_{S} (a - bm)$$
&lt;p>** लेकिन असली चुनौती &amp;ldquo;बीजीय पक्ष&amp;rdquo; पर है। **
बीजीय क्षेत्र $\mathbb{Z}[\alpha]$ की दुनिया में, अभाज्य गुणनखंडन की विशिष्टता (unique factorization) लागू नहीं होती है, इसलिए हमने आदर्शों (ideals) का उपयोग करके गणना की है। मैट्रिक्स गणना केवल यह गारंटी देती है कि यह &amp;ldquo;आदर्श का वर्ग&amp;rdquo; है, और ** यह गारंटी नहीं देता है कि यह &amp;ldquo;तत्व का वर्ग ($\gamma^2$)&amp;rdquo; बन जाता है ** ।&lt;/p>
&lt;p>यहाँ बीजीय संख्या सिद्धांत में एक दुर्जेय दीवार है, जिसे &amp;ldquo;आदर्श वर्ग समूह (Ideal Class Group) की बाधा&amp;rdquo; और &amp;ldquo;इकाई समूह (Unit Group) की बाधा&amp;rdquo; कहा जाता है।
GNFS में, इस दीवार को तोड़ने के लिए ** &amp;ldquo;द्विघाती वर्णों (Quadratic Characters)&amp;rdquo; ** नामक जादू का उपयोग किया जाता है।
Phase 4 के मैट्रिक्स में, दर्जनों विशेष अभाज्य आदर्शों के लिए द्विघाती अवशेषों (लेजेंड्रे प्रतीक) की पंक्तियों को चुपके से पहले से जोड़ दिया जाता है। इस वजह से, पाया गया सेट $S$ भारी संभावना के साथ बाधाओं को बायपास करेगा, और सुरक्षित रूप से &amp;ldquo;सच्चे तत्व का वर्ग $\gamma^2$&amp;rdquo; बनाएगा।&lt;/p>
&lt;p>$\gamma$ (बीजीय वर्गमूल) ज्ञात करने का कार्य Montgomery विधि जैसे अत्यंत जटिल एल्गोरिदम का उपयोग करके किया जाता है।&lt;/p>
&lt;p>और अंततः, बीजीय पक्ष के वर्गमूल $\gamma$ को रिंग होमोमोर्फिज्म $\phi$ द्वारा वास्तविक दुनिया में ले जाया जाता है ($x$ के लिए $m$ प्रतिस्थापित करके), जिससे हमें $Y$ मिलता है।
यदि हम परिमेय पक्ष के $V$ को वैसे ही $X$ के रूप में रखते हैं, तो वह पूर्ण समीकरण जो हम खोज रहे थे, अंततः पूरा हो जाता है।&lt;/p>
&lt;p>** &lt;/p>
$$X^2 \equiv Y^2 \pmod N$$
&lt;p> **&lt;/p>
&lt;p>अब बस $\gcd(X-Y, N)$ की गणना करनी है। 0.001 सेकंड का प्रसंस्करण चलता है, और जैसे ही गैर-तुच्छ कारक स्क्रीन पर प्रिंट होते हैं, अभेद्य मानी जाने वाली RSA क्रिप्टोग्राफी पूरी तरह से ढह जाती है।&lt;/p>
&lt;hr>
&lt;h2 id="नषकरष">निष्कर्ष
&lt;/h2>&lt;p>GNFS सिर्फ एक प्रोग्रामिंग तकनीक नहीं है।
यह मानव बुद्धि का क्रिस्टलीकरण है जिसने &amp;ldquo;शुद्ध गणित की गहराइयों&amp;rdquo; जैसे अमूर्त बीजगणित (abstract algebra), रिंग थ्योरी (ring theory), और आदर्श वर्ग समूहों (ideal class groups) को &amp;ldquo;चरम इंजीनियरिंग&amp;rdquo; जैसे सुपरकंप्यूटर वितरित आर्किटेक्चर और कैश अनुकूलन के साथ जीत लिया है।&lt;/p>
&lt;p>हम जिन चैट और क्रेडिट कार्ड की जानकारी को लापरवाही से भेजते हैं, वे ऐसे खगोलीय गणितीय बचावों द्वारा संरक्षित हैं।&lt;/p>
&lt;p>हमें उम्मीद है कि इस C++ फ्रेमवर्क के माध्यम से, आप अत्याधुनिक क्रिप्टोग्राफी क्रैकिंग एल्गोरिदम के पीछे &amp;ldquo;गणित और कंप्यूटर के रोमांस&amp;rdquo; को महसूस करेंगे।&lt;/p></description></item><item><title>इंटरनेट एन्क्रिप्शन को तोड़ने वाला मानवता का सबसे शक्तिशाली गणित "General Number Field Sieve (GNFS)" क्या है?</title><link>http://kenji.blog/hi/p/%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88%E3%81%AE%E6%9A%97%E5%8F%B7%E3%82%92%E7%A0%B4%E3%82%8B%E4%BA%BA%E9%A1%9E%E6%9C%80%E5%BC%B7%E3%81%AE%E6%95%B0%E5%AD%A6%E4%B8%80%E8%88%AC%E6%95%B0%E4%BD%93%E7%AF%A9%E6%B3%95gnfs%E3%81%A8%E3%81%AF/</link><pubDate>Sat, 05 Sep 2026 02:09:08 +0900</pubDate><guid>http://kenji.blog/hi/p/%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88%E3%81%AE%E6%9A%97%E5%8F%B7%E3%82%92%E7%A0%B4%E3%82%8B%E4%BA%BA%E9%A1%9E%E6%9C%80%E5%BC%B7%E3%81%AE%E6%95%B0%E5%AD%A6%E4%B8%80%E8%88%AC%E6%95%B0%E4%BD%93%E7%AF%A9%E6%B3%95gnfs%E3%81%A8%E3%81%AF/</guid><description>&lt;img src="http://kenji.blog/p/%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88%E3%81%AE%E6%9A%97%E5%8F%B7%E3%82%92%E7%A0%B4%E3%82%8B%E4%BA%BA%E9%A1%9E%E6%9C%80%E5%BC%B7%E3%81%AE%E6%95%B0%E5%AD%A6%E4%B8%80%E8%88%AC%E6%95%B0%E4%BD%93%E7%AF%A9%E6%B3%95gnfs%E3%81%A8%E3%81%AF/gnfs_two_worlds_1788542142485.jpg" alt="Featured image of post इंटरनेट एन्क्रिप्शन को तोड़ने वाला मानवता का सबसे शक्तिशाली गणित "General Number Field Sieve (GNFS)" क्या है?" />&lt;h1 id="इटरनट-एनकरपशन-क-तडन-वल-मनवत-क-सबस-शकतशल-गणत-general-number-field-sieve-gnfs-कय-ह">इंटरनेट एन्क्रिप्शन को तोड़ने वाला मानवता का सबसे शक्तिशाली गणित &amp;ldquo;General Number Field Sieve (GNFS)&amp;rdquo; क्या है?
&lt;/h1>&lt;p>जिस इंटरनेट का हम हर दिन उपयोग करते हैं। LINE संदेश, YouTube, Amazon पर खरीदारी आदि, सभी संचार &amp;ldquo;एन्क्रिप्शन&amp;rdquo; द्वारा सुरक्षित हैं।
वर्तमान में, दुनिया में सबसे अधिक उपयोग किया जाने वाला एन्क्रिप्शन &amp;ldquo;RSA एन्क्रिप्शन&amp;rdquo; है।&lt;/p>
&lt;p>RSA एन्क्रिप्शन की रक्षा की कुंजी बहुत सरल है। यह इस गणितीय गुण का उपयोग करता है कि ** &amp;ldquo;विशाल संख्याओं का अभाज्य गुणनखंडन कंप्यूटर द्वारा भी हल नहीं किया जा सकता है&amp;rdquo; ** ।
उदाहरण के लिए, &amp;ldquo;15&amp;rdquo; के लिए हम तुरंत जान जाते हैं कि यह &amp;ldquo;3 × 5&amp;rdquo; है, लेकिन जैसे ही यह &amp;ldquo;270 अंकों की संख्या&amp;rdquo; बन जाता है, भले ही हम दुनिया के सभी सुपर कंप्यूटरों को मिला दें, इसे हल करने में करोड़ों साल लगेंगे।&lt;/p>
&lt;p>हालाँकि, गणितज्ञ भी चुप नहीं रहे। इस अभेद्य एन्क्रिप्शन को तोड़ने के लिए, मानवता ने एक लगभग जादुई एल्गोरिदम (गणना प्रक्रिया) बनाया है जिसे ** &amp;ldquo;General Number Field Sieve (GNFS)&amp;rdquo; ** कहा जाता है।&lt;/p>
&lt;p>इस लेख में, किसी भी तकनीकी शब्द का उपयोग किए बिना, केवल ** मिडिल स्कूल के गणित (अभाज्य गुणनखंडन, बीजगणितीय व्यंजक, महत्तम समापवर्तक) ** के ज्ञान के साथ, हम चरण-दर-चरण समझाएंगे कि &amp;ldquo;मानवता का यह सबसे शक्तिशाली एल्गोरिदम&amp;rdquo; एन्क्रिप्शन को कैसे तोड़ता है!&lt;/p>
&lt;hr>
&lt;h2 id="अधयय-1-डकडग-क-लकषय-एक-8व-ककष-क-सतर-ह">अध्याय 1: डिकोडिंग का लक्ष्य एक &amp;ldquo;8वीं कक्षा का सूत्र&amp;rdquo; है
&lt;/h2>&lt;p>विशाल अभाज्य गुणनखंडन का सामना करने के लिए सबसे बड़ी विशेष चाल। यह 8वीं कक्षा में सीखा गया सूत्र है:&lt;/p>
&lt;blockquote>
&lt;p>** $X^2 - Y^2 = (X + Y)(X - Y)$ **&lt;/p>
&lt;/blockquote>
&lt;p>आप सोच सकते हैं: &amp;ldquo;सच में, क्या ऐसा बुनियादी सूत्र एन्क्रिप्शन को तोड़ सकता है?&amp;quot;। हालाँकि, यह वह मास्टर की है जो सब कुछ खोल देती है।&lt;/p>
&lt;p>एन्क्रिप्शन को तोड़ने का सबसे बड़ा लक्ष्य, एक विशाल संख्या $N$ के लिए, ** &amp;ldquo;ऐसे संख्याएँ ($X$ और $Y$) खोजना है जहाँ $X^2$ और $Y^2$ को $N$ से विभाजित करने पर शेषफल समान हो&amp;rdquo; ** ।&lt;/p>
&lt;h3 id="समन-शषफल-एनकरपशन-क-कय-तडत-ह">&amp;ldquo;समान शेषफल&amp;rdquo; एन्क्रिप्शन को क्यों तोड़ता है?
&lt;/h3>&lt;p>मान लीजिए कि दो संख्याओं, $X^2$ और $Y^2$, का &amp;ldquo;$N$ से विभाजित करने पर समान शेषफल&amp;rdquo; है।
समान शेषफल होने का मतलब है कि एक नियम है जहाँ ** घटाव &amp;ldquo;$X^2 - Y^2$&amp;rdquo; हमेशा $N$ से पूरी तरह से विभाज्य होगा ($N$ का गुणज होगा) ** ।&lt;/p>
&lt;p>यहाँ, मान लें कि एन्क्रिप्शन में प्रयुक्त विशाल संख्या $N$ दो गुप्त अभाज्य संख्याओं ($p$ और $q$) के गुणन से बनी है ($N = p \times q$)।&lt;/p>
&lt;p>$X^2 - Y^2$ का गुणनखंडन करने पर, हमें ** $(X - Y)(X + Y)$ ** मिलता है।
इसका $N$ का गुणज होने का अर्थ है कि इस गुणन में कहीं न कहीं गुप्त अभाज्य संख्याएँ $p$ और $q$ छिपी हैं।&lt;/p>
&lt;p>यहाँ, एक चमत्कार होता है।
गणितीय रूप से ** 50% (आधा) ** संभावना है कि दो अभाज्य संख्याएँ $p$ और $q$ अलग-अलग कमरों में चली जाएँगी: ** &amp;ldquo;$p$ $(X - Y)$ के कमरे में जाता है&amp;rdquo; और &amp;ldquo;$q$ $(X + Y)$ के कमरे में जाता है&amp;rdquo; ** ।&lt;/p>
&lt;p>केवल अभाज्य संख्या $p$ के $(X - Y)$ कक्ष में प्रवेश करने के साथ, आइए $(X - Y)$ और $N$ के ** &amp;ldquo;महत्तम समापवर्तक (सबसे बड़ा उभयनिष्ठ भाग)&amp;rdquo; ** की गणना करें।&lt;/p>
&lt;ul>
&lt;li>$(X - Y)$ की सामग्री = $p \times$ कोई संख्या&lt;/li>
&lt;li>$N$ की सामग्री = $p \times q$
एकमात्र सामान्य भाग ** &amp;ldquo;$p$&amp;rdquo; ** है!&lt;/li>
&lt;/ul>
&lt;p>दूसरे शब्दों में, जैसे ही महत्तम समापवर्तक की गणना की जाती है, छिपी हुई अभाज्य संख्या $p$ लीक हो जाती है और एन्क्रिप्शन पूरी तरह से डिकोड हो जाता है। (*&amp;ldquo;यूक्लिडियन एल्गोरिदम&amp;rdquo; का उपयोग करके स्मार्टफोन पर भी महत्तम समापवर्तक की तुरंत गणना की जा सकती है)।&lt;/p>
&lt;p>** 【छोटा कॉलम: वर्ग क्यों? घन या दोगुना काम क्यों नहीं करता?】 **&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;$2X - 2Y$&amp;rdquo; के साथ, यह $2(X - Y)$ हो जाता है और केवल एक कमरा होता है, इसलिए आप अभाज्यों को अलग नहीं कर सकते। &amp;ldquo;$X^3 - Y^3$&amp;rdquo; के साथ, कमरे का आकार असंतुलित हो जाता है और गणना अनावश्यक रूप से भारी हो जाती है। अभाज्यों को दो में अलग करने के लिए, &amp;ldquo;वर्ग&amp;rdquo; जो पूरी तरह से दो कमरों में विभाजित होता है, सबसे अधिक लागत प्रभावी है।&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;h2 id="अधयय-2-x-और-y-कस-खज-अभजय-सखय-करड-सगरह-पहल">अध्याय 2: X और Y कैसे खोजें? &amp;ldquo;अभाज्य संख्या कार्ड संग्रह पहेली&amp;rdquo;
&lt;/h2>&lt;p>लक्ष्य समझ में आ गया है। हालाँकि, भले ही हम आँख बंद करके &amp;ldquo;$X^2$ और $Y^2$ जिनके समान शेषफल हैं&amp;rdquo; की खोज करें, ब्रह्मांड का अंत उन्हें खोजने से पहले आ जाएगा।
इसलिए, गणितज्ञ एक शानदार विचार लेकर आए जिसे ** &amp;ldquo;अभाज्य संख्या कार्ड संग्रह पहेली&amp;rdquo; ** कहा जाता है।&lt;/p>
&lt;h3 id="चरण-1-छलन-स-कवल-सन-क-धल-smooth-numbers-एकतर-कर">चरण 1: छलनी से केवल सोने की धूल (smooth numbers) एकत्र करें
&lt;/h3>&lt;p>सबसे पहले, एक उपयुक्त संख्या $Z$ तैयार करें, इसे वर्ग करें और इसे $N$ से विभाजित करके शेषफल $W$ की गणना करें।
($Z^2 = W$ की शेषफल दुनिया)&lt;/p>
&lt;p>प्राप्त शेषफल $W$ का अभाज्य गुणनखंडन करें। यहाँ, केवल जब ** &amp;ldquo;2, 3, 5, 7, आदि जैसे छोटे अभाज्यों से बना $W$&amp;rdquo; ** दिखाई देता है, तो उस समीकरण को &amp;ldquo;विजेता कार्ड&amp;rdquo; के रूप में रखें, और यदि बड़े अभाज्य मिश्रित हों तो इसे फेंक दें।
यह नदी में छलनी से बड़े पत्थरों को फेंकने और केवल सोने की धूल इकट्ठा करने जैसा है।&lt;/p>
&lt;h3 id="चरण-2-सबक-सम-बनन-क-पहल">चरण 2: सबको &amp;ldquo;सम&amp;rdquo; बनाने की पहेली
&lt;/h3>&lt;p>उदाहरण के लिए, मान लीजिए कि निम्नलिखित 3 सोने की धूल वाले कार्ड एकत्र किए गए हैं।&lt;/p>
&lt;ul>
&lt;li>कार्ड A: $Z_1^2 = 2^3 \times 3^1$&lt;/li>
&lt;li>कार्ड B: $Z_2^2 = 2^1 \times 5^1$&lt;/li>
&lt;li>कार्ड C: $Z_3^2 = 3^1 \times 5^1$&lt;/li>
&lt;/ul>
&lt;p>आइए उन सभी को गुणा करें।
दाईं ओर $(2^3 \times 3^1) \times (2^1 \times 5^1) \times (3^1 \times 5^1)$ हो जाता है,
और सब कुछ एक साथ व्यवस्थित करने पर, यह ** &amp;ldquo;$2^4 \times 3^2 \times 5^2$&amp;rdquo; ** बन जाता है।&lt;/p>
&lt;p>आश्चर्य की बात है, अभाज्य संख्याओं की संख्या &amp;ldquo;4, 2, 2&amp;rdquo; हो गई, ** सभी सम संख्याएँ हैं ** !
सभी सम होने का अर्थ है कि यदि आप कुल राशि को आधा कर देते हैं, तो यह &amp;ldquo;किसी चीज़ का वर्ग&amp;rdquo; होगा।
दूसरे शब्दों में, $(2^2 \times 3^1 \times 5^1)^2 = (60)^2$।&lt;/p>
&lt;p>बाईं ओर $(Z_1 \times Z_2 \times Z_3)^2$ है, तो अंततः,
** $X = (Z_1 \times Z_2 \times Z_3)$ **
** $Y = 60$ **
&amp;ldquo;$X^2 = Y^2$&amp;rdquo; की बहुप्रतीक्षित जोड़ी पूरी हो गई है!&lt;/p>
&lt;p>कंप्यूटर के लिए, यह गणना करने की पहेली कि अभाज्य संख्याओं की संख्या &amp;ldquo;सम है या विषम (0 या 1)&amp;rdquo; कुछ ऐसा है जिसमें वे बहुत अच्छे हैं, इसलिए इस पद्धति के साथ $X$ और $Y$ उच्च गति पर पाए जा सकते हैं।&lt;/p>
&lt;hr>
&lt;h2 id="अधयय-3-नरश-क-दवर">अध्याय 3: निराशा की दीवार
&lt;/h2>&lt;p>अब किसी भी एन्क्रिप्शन को तोड़ा जा सकता है! &amp;hellip;या हमने ऐसा सोचा, लेकिन एक बड़ी समस्या उत्पन्न होती है।
यदि एन्क्रिप्शन संख्या $N$ &amp;ldquo;100 अंक&amp;rdquo; तक है, तो यह विधि (जिसे Quadratic Sieve कहा जाता है) इसे हल कर सकती है, लेकिन जब $N$ &amp;ldquo;200 या 300 अंक&amp;rdquo; बन जाता है, तो गणना के मध्य में आने वाला $W$ बहुत बड़ा हो जाता है।&lt;/p>
&lt;p>जब संख्याएँ बहुत बड़ी हो जाती हैं, तो &amp;ldquo;केवल छोटी अभाज्य संख्याओं (सोने की धूल) से बनी संख्याएँ&amp;rdquo; आना बंद हो जाती हैं। रेगिस्तान में कॉन्टैक्ट लेंस खोजना अधिक कठिन हो जाता है, और पहेली को सुलझाने के लिए आवश्यक कार्ड बिल्कुल भी एकत्र नहीं होंगे।&lt;/p>
&lt;p>यहाँ, अंततः, मानवता का अंतिम हथियार, ** &amp;ldquo;General Number Field Sieve (GNFS)&amp;rdquo; ** प्रकट होता है।&lt;/p>
&lt;hr>
&lt;h2 id="अधयय-4-मनवत-क-द-दनय-बनन-क-सबस-शकतशल-वचर">अध्याय 4: मानवता का &amp;ldquo;दो दुनिया&amp;rdquo; बनाने का सबसे शक्तिशाली विचार
&lt;/h2>&lt;p>GNFS का शानदार विचार है: ** &amp;ldquo;संख्याएँ विशाल हो जाती हैं क्योंकि हम केवल वास्तविक दुनिया में गणना करते हैं। तो, चलिए गणना के भार को दो भागों में विभाजित करने के लिए बहुपदों (अक्षर सूत्रों) का उपयोग करके एक &amp;lsquo;पर्दे के पीछे की दुनिया&amp;rsquo; बनाते हैं।&amp;rdquo; **&lt;/p>
&lt;h3 id="अकषर-सतर-क-जद">अक्षर सूत्रों का जादू
&lt;/h3>&lt;p>GNFS आधार संख्या $m$ का उपयोग करके विशाल संख्या $N$ को अक्षर व्यंजक में परिवर्तित करता है।
उदाहरण के लिए यदि $N=100$, $m=4$ के साथ, तो यह $100 = 4^3 + 2(4^2) + 4$ है।
अक्षर $x$ का उपयोग करके इसे सूत्र (पर्दे के पीछे की दुनिया) में बदलते हैं: ** $f(x) = x^3 + 2x^2 + x$ ** ।&lt;/p>
&lt;p>इस सूत्र की दिलचस्प बात यह है कि इसमें यह गुण है: ** &amp;ldquo;यदि आप $x$ के स्थान पर $m$ (उपरोक्त उदाहरण में 4) रखते हैं, तो आप हमेशा वास्तविक संख्या $N$ पर वापस लौट सकते हैं&amp;rdquo; ** ।&lt;/p>
&lt;h3 id="एक-सथ-2-दनयओ-म-सन-क-धल-क-तलश">एक साथ 2 दुनियाओं में सोने की धूल की तलाश
&lt;/h3>&lt;p>GNFS यादृच्छिक पूर्णांक जोड़े $(a, b)$ बनाता है और एक साथ निम्नलिखित दो गणनाएं करता है:&lt;/p>
&lt;ol>
&lt;li>** वास्तविक दुनिया ** : $a - b \times m$&lt;/li>
&lt;li>** अक्षरों की दुनिया ** : बहुपद नियमों द्वारा गणना की गई $a - b \times x$ का मूल्य&lt;/li>
&lt;/ol>
&lt;p>समस्या को दो दुनियाओं में विभाजित करके, संभाली गई संख्याओं का आकार काफी कम (हल्का) हो जाता है। यह एक विशाल चट्टान को आसान से संभालने वाले पत्थरों में विभाजित करने जैसा है।&lt;/p>
&lt;p>फिर, आप केवल उन चमत्कारी जोड़ियों $(a, b)$ को अलग करने और इकट्ठा करने के लिए छलनी का उपयोग करते हैं जहाँ ** &amp;ldquo;वास्तविक दुनिया और अक्षरों की दुनिया दोनों में, वे &amp;lsquo;केवल छोटी अभाज्य संख्याओं (सोने की धूल) से बने&amp;rsquo; हैं&amp;rdquo; ** । यही &amp;ldquo;Number Field Sieve&amp;rdquo; नाम का मूल है।&lt;/p>
&lt;h3 id="वह-कषण-जब-एनकरपशन-अतत-टट-जत-ह">वह क्षण जब एन्क्रिप्शन अंततः टूट जाता है
&lt;/h3>&lt;p>एक बार दोनों दुनियाओं से करोड़ों &amp;ldquo;गोल्ड डस्ट कार्ड&amp;rdquo; एकत्र हो जाने के बाद, सुपरकंप्यूटर &amp;ldquo;वह संयोजन खोजने के लिए जहां अभाज्य संख्याओं की संख्या सभी सम हों&amp;rdquo; के लिए विशाल मैट्रिक्स गणना का उपयोग करते हैं, ठीक वैसे ही जैसे हमने अध्याय 2 में किया था।&lt;/p>
&lt;p>एक बार संयोजन मिल जाने के बाद:&lt;/p>
&lt;ul>
&lt;li>वास्तविक दुनिया में वर्ग संख्या को ** $X^2$ ** होने दें&lt;/li>
&lt;li>अक्षरों की दुनिया में बनाए गए वर्ग सूत्र को ** $Y(x)^2$ ** होने दें&lt;/li>
&lt;/ul>
&lt;p>अंततः, अक्षर सूत्र $Y(x)$ में $x$ के स्थान पर $m$ को रखें, वास्तविक दुनिया में वापस कूदें और उनसे जुड़ें।
फिर, गणितीय जादू की तरह, वह स्थिति जहाँ ** &amp;ldquo;$X^2$ और $Y^2$ का शेषफल समान है&amp;rdquo; ** पूरी तरह से सिद्ध हो जाती है!&lt;/p>
&lt;p>बाकी, अध्याय 1 की तरह, केवल $X - Y$ और $N$ के महत्तम समापवर्तक की गणना करना है, और अभेद्य RSA एन्क्रिप्शन ढह जाएगा, जिससे गुप्त अभाज्य संख्याएँ सामने आ जाएंगी।&lt;/p>
&lt;hr>
&lt;h2 id="नषकरष-गणत-कभ-समपत-नह-हत">निष्कर्ष: गणित कभी समाप्त नहीं होता
&lt;/h2>&lt;p>आप सोच रहे होंगे: &amp;ldquo;बढ़िया, GNFS के साथ किसी भी एन्क्रिप्शन को तोड़ा जा सकता है!&amp;quot;।
हालाँकि, RSA एन्क्रिप्शन ने भी हार नहीं मानी है। आज इंटरनेट पर जो उपयोग किया जाता है वह एक राक्षसी विशाल संख्या है जिसे &amp;ldquo;RSA-2048 (लगभग 617 अंक)&amp;rdquo; कहा जाता है।&lt;/p>
&lt;p>GNFS मानवता का सबसे शक्तिशाली एल्गोरिदम है, लेकिन 270 अंकों (RSA-270) को हल करने के लिए भी कहा जाता है कि दुनिया भर के कंप्यूटरों को जोड़ने पर भी हजारों या दसियों हजार साल लगेंगे। अभी के लिए, हमारे LINE और बैंक डेटा सुरक्षित हैं।&lt;/p>
&lt;p>लेकिन क्या होगा यदि ** &amp;ldquo;किसी भी विशाल संख्या के लिए $X$ और $Y$ को तुरंत खोजने का जादू&amp;rdquo; ** प्रकट हो जाए?
वास्तव में, इसके सबसे करीब ** &amp;ldquo;क्वांटम कंप्यूटर (Shor का एल्गोरिदम)&amp;rdquo; ** है जो वर्तमान में विकास में है। क्वांटम यांत्रिकी की तरंग प्रकृति का उपयोग करते हुए, यह गणितीय रूप से सिद्ध हो गया है कि थकाऊ कार्ड संग्रह पहेली को दरकिनार करना और एक ही बार में उत्तर तक पहुंचना संभव है।&lt;/p>
&lt;p>एन्क्रिप्शन बनाने वालों (रक्षा) और इसे तोड़ने के लिए एल्गोरिदम बनाने वालों (हमला) के बीच बुद्धि की एक अंतहीन लड़ाई।
यह जानकर कि मिडिल स्कूल में सीखा गया &amp;ldquo;अभाज्य गुणनखंडन&amp;rdquo; और &amp;ldquo;अक्षर व्यंजक&amp;rdquo; वास्तव में वे हथियार हैं जो वैश्विक सुरक्षा की अग्रिम पंक्ति में लड़ रहे हैं, क्या गणित की कक्षाएं थोड़ी अधिक दिलचस्प नहीं लगती हैं?&lt;/p>
&lt;p>जो भविष्य के सबसे मजबूत एल्गोरिदम की खोज करेगा, वह आप ही हो सकते हैं जो इस लेख को पढ़ रहे हैं!&lt;/p>
&lt;hr>
&lt;p>&lt;em>(※यह लेख छात्रों के लिए कोड-ब्रेकिंग के गणितीय आकर्षण का एक वैचारिक रूपांतरण है। वास्तविक GNFS की गणना उच्च विश्वविद्यालय गणित, जैसे बीजीय संख्या क्षेत्रों के आदर्श वर्ग समूहों और समरूपता का उपयोग करके सख्ती से की जाती है)&lt;/em>&lt;/p></description></item><item><title>केप्लर अनुमान की सरल व्याख्या</title><link>http://kenji.blog/hi/p/kepler-conjecture-simple-explanation/</link><pubDate>Mon, 21 Jul 2025 22:53:03 +0900</pubDate><guid>http://kenji.blog/hi/p/kepler-conjecture-simple-explanation/</guid><description>&lt;img src="http://kenji.blog/p/%E3%82%B1%E3%83%97%E3%83%A9%E3%83%BC%E4%BA%88%E6%83%B3%E3%82%92%E3%82%8F%E3%81%8B%E3%82%8A%E3%82%84%E3%81%99%E3%81%8F%E8%A7%A3%E8%AA%AC/img.png" alt="Featured image of post केप्लर अनुमान की सरल व्याख्या" />&lt;h1 id="कपलर-अनमन-क-सरल-वयखय-तरबज-क-सबस-घन-तरह-स-पक-करन-क-तरक">केप्लर अनुमान की सरल व्याख्या! &lt;del>तरबूज को सबसे घनी तरह से पैक करने का तरीका&lt;/del>
&lt;/h1>&lt;p>नमस्ते, मैं kenji हूँ!&lt;/p>
&lt;p>आज मैं &amp;ldquo;केप्लर अनुमान&amp;rdquo; नामक गणित के एक ऐसे विषय को समझाने की कोशिश करूँगा, जिसका नाम थोड़ा कठिन लगता है, लेकिन मैं इसे यथासंभव आसान बनाऊँगा।&lt;/p>
&lt;p>पहली नज़र में, यह बहुत ही अजीब विषय लग सकता है, लेकिन यह एक बहुत ही व्यावहारिक समस्या भी है: &amp;ldquo;हम एक डिब्बे में तरबूजों को सबसे घनी तरह से कैसे पैक कर सकते हैं?&amp;quot;। इसका संबंध सुविधा स्टोर के रेफ्रिजरेटर और सामान को स्टैक करने के तरीके से भी है।&lt;/p>
&lt;p>और गणित की दुनिया में, इसके पीछे एक बहुत ही रोमांटिक कहानी है कि यह &lt;strong>400 से अधिक वर्षों तक सिद्ध नहीं हो सका&lt;/strong> ।&lt;/p>
&lt;p>चलिए शुरू करते हैं!&lt;/p>
&lt;hr>
&lt;h2 id="कपलर-आखर-कन-थ">केप्लर आखिर कौन था?
&lt;/h2>&lt;p>सबसे पहले, &amp;ldquo;केप्लर अनुमान&amp;rdquo; में &amp;ldquo;केप्लर&amp;rdquo; कौन है?&lt;/p>
&lt;p>यह एक जर्मन खगोलशास्त्री और गणितज्ञ &lt;strong>जोहान्स केप्लर (Johannes Kepler)&lt;/strong> का नाम है।&lt;/p>
&lt;p>यह आदमी बहुत ही अद्भुत था।
उदाहरण के लिए, वह वही थे जिन्होंने खोजा कि ग्रहों की कक्षाएँ अण्डाकार हैं। आज यह सामान्य ज्ञान है, लेकिन उस समय (लगभग 1600 में), यह एक ऐसा युग था जब हेलियोसेंट्रिज़्म (सूर्य-केंद्रित प्रणाली) पर भी मुश्किल से विश्वास किया जाता था।&lt;/p>
&lt;ul>
&lt;li>&lt;strong>गैलीलियो = अवलोकन के प्रतिभा&lt;/strong>&lt;/li>
&lt;li>&lt;strong>केप्लर = गणितीय सूत्रों के साथ ब्रह्मांड को समझाने वाले प्रतिभा&lt;/strong>&lt;/li>
&lt;li>&lt;strong>न्यूटन = वह सुपर जीनियस जिसने उस सिद्धांत को भौतिकी के नियमों में संक्षेप में प्रस्तुत किया&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>इस स्थिति के साथ, केप्लर &amp;ldquo;गणितीय सूत्रों के साथ ब्रह्मांड के बारे में बात करने&amp;rdquo; में अग्रणी थे।&lt;/p>
&lt;p>और, एक समय, उसने यह कहा:&lt;/p>
&lt;hr>
&lt;h2 id="कपलर-अनमन-कय-ह">केप्लर अनुमान क्या है?
&lt;/h2>&lt;p>संक्षेप में, &amp;ldquo;केप्लर अनुमान&amp;rdquo; इस प्रकार है।&lt;/p>
&lt;hr>
&lt;blockquote>
&lt;p>&lt;strong>समान आकार के गोले (तरबूज या संतरे) को एक डिब्बे में पैक करते समय, कौन सी व्यवस्था सबसे घनी पैकिंग की अनुमति देती है?&lt;/strong>&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;p>यही समस्या है।&lt;/p>
&lt;p>और 1600 के दशक में केप्लर ने जो अनुमान लगाया वह था:&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>क्या उन्हें त्रिकोण की तरह स्टैक करना सबसे कुशल नहीं होगा, जैसे ग्रीनग्रोसर संतरे प्रदर्शित करते हैं?&lt;/strong>&lt;/p>
&lt;/blockquote>
&lt;p>गणितीय भाषा में, इसे &lt;strong>&amp;ldquo;सबसे घना पैकिंग समस्या (Sphere Packing)&amp;rdquo;&lt;/strong> कहा जाता है, जो अंतरिक्ष में गोले को सबसे घनी तरह से पैक करने का तरीका खोजने की समस्या है।&lt;/p>
&lt;p>केप्लर ने अनुमान लगाया कि &lt;strong>&amp;ldquo;फेस-सेंटर्ड क्यूबिक स्ट्रक्चर (FCC)&amp;rdquo;&lt;/strong> (तरबूजों को त्रिकोणीय पैटर्न में स्टैक करने की तरह) नामक व्यवस्था सबसे कुशल होगी।&lt;/p>
&lt;p>सभी ने सोचा, &amp;ldquo;हाँ, यह निश्चित रूप से सही लगता है&amp;hellip;&amp;rdquo;, लेकिन गणितीय रूप से यह साबित करना कि &amp;ldquo;यह बिल्कुल सबसे अच्छा है!&amp;rdquo; बेहद मुश्किल था।&lt;/p>
&lt;hr>
&lt;h2 id="सबत-हन-म-400-सल-लग">साबित होने में 400 साल लगे!?!
&lt;/h2>&lt;p>तो, वास्तव में इसे कब सिद्ध किया गया&amp;hellip;?&lt;/p>
&lt;p>आश्चर्यजनक रूप से, &lt;strong>1998 से 2005 के आसपास&lt;/strong> ।
यानी, &lt;strong>लगभग 400 वर्षों तक कोई भी इसे साबित नहीं कर सका&lt;/strong> । यह बहुत पागलपन है।&lt;/p>
&lt;p>इसके अलावा, इसे साबित करने वाले एक अमेरिकी गणितज्ञ थे जिनका नाम &lt;strong>थॉमस हेल्स (Thomas Hales)&lt;/strong> था।&lt;/p>
&lt;p>उन्होंने महसूस किया कि यह केवल मैन्युअल गणना से असंभव होगा, इसलिए उन्होंने &lt;strong>साबित करने के लिए कंप्यूटर का उपयोग किया&lt;/strong> ।
हालाँकि, समस्या यह उत्पन्न हुई कि प्रमाण इतना जटिल था कि मनुष्य इसे ठीक से नहीं जाँच सकते थे!&lt;/p>
&lt;p>इसलिए, गणितीय दुनिया में भी एक बड़ी बहस छिड़ गई: &amp;ldquo;तो, क्या हम वास्तव में कंप्यूटर द्वारा किए गए प्रमाण पर भरोसा कर सकते हैं?&amp;quot;।&lt;/p>
&lt;p>अंततः, वह प्रमाण (औपचारिक रूप से &amp;ldquo;औपचारिक प्रमाण&amp;rdquo; कहा जाता है) जिसमें कहा गया था कि &amp;ldquo;मैंने कंप्यूटर सहित इसकी कड़ाई से पुष्टि की है!&amp;rdquo; &lt;strong>2014&lt;/strong> में पूरा हुआ।&lt;/p>
&lt;p>यानी, यह साबित होने में &lt;strong>400 से अधिक वर्ष लग गए कि केप्लर का अंतर्ज्ञान सही था&lt;/strong> । क्या रोमांस है।&lt;/p>
&lt;hr>
&lt;h2 id="वसतवक-जवन-म-भ-बहत-उपयग-कय-जत-ह">वास्तविक जीवन में भी बहुत उपयोग किया जाता है
&lt;/h2>&lt;p>आप सोच सकते हैं कि &amp;ldquo;गोले को कैसे व्यवस्थित किया जाए&amp;rdquo; केवल गणित के दीवानों के लिए एक विषय है, लेकिन वास्तव में यह बहुत व्यावहारिक है।&lt;/p>
&lt;ul>
&lt;li>&lt;strong>सुविधा स्टोर के रेफ्रिजरेटर में कुशलता से पेय पैक करने के लिए&lt;/strong>&lt;/li>
&lt;li>&lt;strong>कैन को ट्रांसपोर्ट पैलेट पर स्टैक करते समय&lt;/strong>&lt;/li>
&lt;li>&lt;strong>यह संचार (डिजिटल सिग्नल कम्प्रेशन, आदि) में भी लागू होता है&lt;/strong>&lt;/li>
&lt;li>&lt;strong>3D प्रिंटर और क्रिस्टल संरचनाओं के डिजाइन में उपयोग किया जाता है&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>आदि, यह वास्तव में एक सिद्धांत है जिसका उपयोग हमारे जीवन के पीछे बड़े पैमाने पर किया जाता है।&lt;/p>
&lt;hr>
&lt;h2 id="नषकरष-मनव-अतरजञन-अदभत-ह">निष्कर्ष: मानव अंतर्ज्ञान अद्भुत है
&lt;/h2>&lt;p>तो, चलिए संक्षेप में बताते हैं।&lt;/p>
&lt;ul>
&lt;li>&lt;strong>केप्लर अनुमान&lt;/strong> = गोलों को सबसे घनी तरह से कैसे पैक किया जाए, इसकी समस्या&lt;/li>
&lt;li>&lt;strong>श्रीमान केप्लर&lt;/strong> = गणितज्ञ और खगोलशास्त्री जिन्होंने ग्रहों की कक्षाओं की खोज की&lt;/li>
&lt;li>&lt;strong>1600 के दशक में अनुमान लगाया गया! लेकिन 2000 के दशक में साबित हुआ!&lt;/strong>&lt;/li>
&lt;li>&lt;strong>वास्तविक जीवन में भी बहुत लागू!&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>और सबसे दिलचस्प बात यह है कि:
&lt;strong>&amp;ldquo;जिस तरह से ग्रीनग्रोसर अपने अंतर्ज्ञान से फलों को स्टैक करते थे, वह गणितीय रूप से भी सबसे मजबूत था&amp;rdquo;&lt;/strong> ।&lt;/p>
&lt;p>दूसरे शब्दों में, &lt;strong>मानव अंतर्ज्ञान अद्भुत है&lt;/strong> ।
और यह तथ्य कि &lt;strong>इसे साबित करने में 400 साल लग सकते हैं&lt;/strong> , वास्तव में एक रोमांटिक कहानी है, है ना?&lt;/p>
&lt;hr>
&lt;p>यदि आप रुचि रखते हैं, तो कृपया &amp;ldquo;थॉमस हेल्स&amp;rdquo;, &amp;ldquo;औपचारिक प्रमाण&amp;rdquo;, &amp;ldquo;Sphere Packing&amp;rdquo; आदि खोजें। गहराई में जाना बहुत मजेदार है।&lt;/p>
&lt;p>फिर मिलेंगे!&lt;/p>
&lt;hr>
&lt;p>[PR]&lt;/p>
&lt;div style="background:#fff;width:120px;height:215px;box-sizing:border-box;border:1px solid #ccc;display:flex;flex-direction:column;justify-content:flex-start;align-items:center;">&lt;div style="line-height:0;">&lt;img src="https://static.jp.mercari.com/assets/img/common/jp/logo_horizontal.png" width="105">&lt;/div>&lt;a href="https://jp.mercari.com/item/m71496725612?afid=1916658352" style="width:100px;height:100px;background:#eee;" target="_blank">&lt;img src="https://ambassador-system.mercari.com/v1/i?id=m71496725612&amp;svc=m" style="line-height:0;width:100px;height:100px;object-fit:contain;"/>&lt;/a>&lt;div style="padding:12px 0;width:100%;text-align:center;">&lt;a href="https://jp.mercari.com/item/m71496725612?afid=1916658352" style="width:100px;height:32px;background-color:#E32B36;border-radius:4px;line-height:14px;text-align:center;color:#fff;font-weight:bold;border:0;font-size:12px;display:inline-flex;justify-content:center;align-items:center;" target="_blank">今すぐ購入&lt;/a>&lt;/div>&lt;/div></description></item><item><title>अभाज्य संख्याएँ उत्पन्न करने के लिए C कोड</title><link>http://kenji.blog/hi/p/%E0%A4%85%E0%A4%AD%E0%A4%BE%E0%A4%9C%E0%A5%8D%E0%A4%AF-%E0%A4%B8%E0%A4%82%E0%A4%96%E0%A5%8D%E0%A4%AF%E0%A4%BE%E0%A4%8F%E0%A4%81-%E0%A4%89%E0%A4%A4%E0%A5%8D%E0%A4%AA%E0%A4%A8%E0%A5%8D%E0%A4%A8-%E0%A4%95%E0%A4%B0%E0%A4%A8%E0%A5%87-%E0%A4%95%E0%A5%87-%E0%A4%B2%E0%A4%BF%E0%A4%8F-c-%E0%A4%95%E0%A5%8B%E0%A4%A1/</link><pubDate>Sat, 24 Aug 2024 09:38:10 +0900</pubDate><guid>http://kenji.blog/hi/p/%E0%A4%85%E0%A4%AD%E0%A4%BE%E0%A4%9C%E0%A5%8D%E0%A4%AF-%E0%A4%B8%E0%A4%82%E0%A4%96%E0%A5%8D%E0%A4%AF%E0%A4%BE%E0%A4%8F%E0%A4%81-%E0%A4%89%E0%A4%A4%E0%A5%8D%E0%A4%AA%E0%A4%A8%E0%A5%8D%E0%A4%A8-%E0%A4%95%E0%A4%B0%E0%A4%A8%E0%A5%87-%E0%A4%95%E0%A5%87-%E0%A4%B2%E0%A4%BF%E0%A4%8F-c-%E0%A4%95%E0%A5%8B%E0%A4%A1/</guid><description>&lt;img src="http://kenji.blog/p/%E7%B4%A0%E6%95%B0%E3%82%92%E7%94%9F%E6%88%90%E3%81%99%E3%82%8Bc%E8%A8%80%E8%AA%9E%E3%82%B3%E3%83%BC%E3%83%89/img.png" alt="Featured image of post अभाज्य संख्याएँ उत्पन्न करने के लिए C कोड" />&lt;p>नीचे एक सरल C कोड दिया गया है जो एक निर्दिष्ट सीमा के भीतर अभाज्य संख्याएँ (prime numbers) उत्पन्न करता है। इस उदाहरण में, हम 1 से n तक की अभाज्य संख्याओं को सूचीबद्ध करते हैं।&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;span class="lnt">26
&lt;/span>&lt;span class="lnt">27
&lt;/span>&lt;span class="lnt">28
&lt;/span>&lt;span class="lnt">29
&lt;/span>&lt;span class="lnt">30
&lt;/span>&lt;span class="lnt">31
&lt;/span>&lt;span class="lnt">32
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-cpp" data-lang="cpp">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;stdio.h&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;stdbool.h&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">bool&lt;/span> &lt;span class="nf">isPrime&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span> &lt;span class="n">num&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">num&lt;/span> &lt;span class="o">&amp;lt;=&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">return&lt;/span> &lt;span class="nb">false&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">num&lt;/span> &lt;span class="o">&amp;lt;=&lt;/span> &lt;span class="mi">3&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">return&lt;/span> &lt;span class="nb">true&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">num&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="mi">2&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span> &lt;span class="o">||&lt;/span> &lt;span class="n">num&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="mi">3&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">return&lt;/span> &lt;span class="nb">false&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">5&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">&amp;lt;=&lt;/span> &lt;span class="n">num&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">+=&lt;/span> &lt;span class="mi">6&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">num&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span> &lt;span class="o">||&lt;/span> &lt;span class="n">num&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">i&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="k">return&lt;/span> &lt;span class="nb">false&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="nb">true&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">void&lt;/span> &lt;span class="nf">printPrimes&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span> &lt;span class="n">n&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">printf&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;2 &amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">3&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">&amp;lt;=&lt;/span> &lt;span class="n">n&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">+=&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">isPrime&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="p">))&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">printf&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;%d &amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">i&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">printf&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s">&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kt">int&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">int&lt;/span> &lt;span class="n">n&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">printf&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;अभाज्य संख्याएँ उत्पन्न करने के लिए सीमा का अधिकतम मान दर्ज करें: &amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">scanf&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;%d&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="o">&amp;amp;&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">printf&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;1 से %d तक की अभाज्य संख्याएँ निम्नलिखित हैं:&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s">&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">n&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">printPrimes&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>यह कोड इस प्रकार काम करता है:&lt;/p>
&lt;ol>
&lt;li>isPrime फ़ंक्शन: यह निर्धारित करता है कि दी गई संख्या अभाज्य है या नहीं। दक्षता के लिए, यह पहले जाँचता है कि क्या यह 2 और 3 से विभाज्य है, और फिर 6 के गुणकों में जाँच के साथ आगे बढ़ता है।&lt;/li>
&lt;li>printPrimes फ़ंक्शन: निर्दिष्ट सीमा के भीतर अभाज्य संख्याएँ आउटपुट करता है। 2 सबसे पहले आउटपुट होता है, और फिर केवल विषम संख्याओं की जाँच की जाती है।&lt;/li>
&lt;li>main फ़ंक्शन: उपयोगकर्ता से सीमा का अधिकतम मान दर्ज करने के लिए कहता है, और उस सीमा के भीतर अभाज्य संख्याएँ आउटपुट करता है।&lt;/li>
&lt;/ol>
&lt;p>यदि आप इस कोड को संकलित और चलाते हैं, तो निर्दिष्ट सीमा के भीतर अभाज्य संख्याएँ प्रदर्शित होंगी।&lt;/p></description></item><item><title>Mathematica का परिचय</title><link>http://kenji.blog/hi/p/mathematica%E5%85%A5%E9%96%80/</link><pubDate>Thu, 25 Jul 2024 01:36:19 +0900</pubDate><guid>http://kenji.blog/hi/p/mathematica%E5%85%A5%E9%96%80/</guid><description>&lt;img src="http://kenji.blog/p/mathematica%E5%85%A5%E9%96%80/img.png" alt="Featured image of post Mathematica का परिचय" />&lt;h1 id="mathematica-क-परचय">Mathematica का परिचय
&lt;/h1>&lt;h2 id="समकरण-हल-करन">समीकरण हल करना
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Solve[x^2 - 3 x + 2 == 0, x]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>आउटपुट&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{{x -&amp;gt; 1}, {x -&amp;gt; 2}}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="परणक-सम-म-समकरण-क-हल-ढढन">पूर्णांक सीमा में समीकरण का हल ढूँढना
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Solve[x^2 - 3 x + 2 == 0 &amp;amp;&amp;amp; 0 &amp;lt;= x &amp;lt;= 2, x, Integers]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>आउटपुट&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{{x -&amp;gt; 1}, {x -&amp;gt; 2}}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="यगपत-समकरण-हल-करन">युगपत समीकरण हल करना
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Solve[{x + y == 3, x - y == 1}, {x, y}]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>आउटपुट&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{{x -&amp;gt; 2, y -&amp;gt; 1}}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="असमनतए-हल-करन">असमानताएं हल करना
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Reduce[x^2 - 3 x + 2 &amp;gt; 0, x]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>आउटपुट&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">x &amp;lt; 1 || x &amp;gt; 2
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="अवकलन-करन">अवकलन करना
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">D[x^2, x]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>आउटपुट&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">2 x
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="समकलन-करन">समाकलन करना
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Integrate[x^2, x]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>आउटपुट&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">x^3/3
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="सम-जञत-करन">सीमा ज्ञात करना
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Limit[1/x, x -&amp;gt; 0]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>आउटपुट&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Infinity
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="शरखल-जञत-करन">श्रृंखला ज्ञात करना
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Sum[1/n^2, {n, 1, Infinity}]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>आउटपुट&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">π^2/6
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="मटरकस-बनन">मैट्रिक्स बनाना
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">m = {{1, 2}, {3, 4}}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="मटरकस-क-गणनफल-जञत-करन">मैट्रिक्स का गुणनफल ज्ञात करना
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">m . m
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>आउटपुट&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{{7, 10}, {15, 22}}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="वयतकरम-मटरकस-जञत-करन">व्युत्क्रम मैट्रिक्स ज्ञात करना
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Inverse[m]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>आउटपुट&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{{-2, 1}, {1.5, -0.5}}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="आइगनवलय-और-आइगनवकटर-जञत-करन">आइगेनवैल्यू और आइगेनवेक्टर ज्ञात करना
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Eigensystem[m]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>आउटपुट&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{{5, 0}, {{1, 1}, {1, -1}}}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="सदश-क-बद-गणनफल-जञत-करन">सदिशों का बिंदु गुणनफल ज्ञात करना
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{1, 2} . {3, 4}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>आउटपुट&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">11
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="सदश-क-करस-गणनफल-जञत-करन">सदिशों का क्रॉस गुणनफल ज्ञात करना
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Cross[{1, 2, 3}, {4, 5, 6}]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>आउटपुट&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{-3, 6, -3}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="सदश-क-परमण-जञत-करन">सदिश का परिमाण ज्ञात करना
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Norm[{1, 2, 3}]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>आउटपुट&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">√14
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="सदश-क-कण-जञत-करन">सदिशों का कोण ज्ञात करना
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">ArcCos[{1, 2} . {3, 4}/(Norm[{1, 2}] Norm[{3, 4}])]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>आउटपुट&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">ArcCos[11/(√5 √25)]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="सदश-क-परकषपण-जञत-करन">सदिश का प्रक्षेपण ज्ञात करना
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{1, 2} . {3, 4}/Norm[{3, 4}] {3, 4}/Norm[{3, 4}]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>आउटपुट&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{11/5, 22/5}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="सदश-क-घरणन-जञत-करन">सदिश का घूर्णन ज्ञात करना
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">RotationMatrix[π/2].{1, 0}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>आउटपुट&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{0, 1}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="सदश-क-सथनतरण-जञत-करन">सदिश का स्थानांतरण ज्ञात करना
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">TranslationTransform[{1, 2}][{3, 4}]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>आउटपुट&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{4, 6}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="सदश-क-सकलग-जञत-करन">सदिश की स्केलिंग ज्ञात करना
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">ScalingTransform[{2, 3}][{1, 1}]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>आउटपुट&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{2, 3}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="सदश-क-परवरतन-जञत-करन">सदिश का परावर्तन ज्ञात करना
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">ReflectionTransform[{1, 1}][{1, 1}]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>आउटपुट&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{0, 0}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="यदचछक-सखयए-उतपनन-करन">यादृच्छिक संख्याएँ उत्पन्न करना
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">RandomReal[]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>आउटपुट&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">0.123456
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="यदचछक-सखयए-उतपनन-करन-परणक">यादृच्छिक संख्याएँ उत्पन्न करना (पूर्णांक)
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">RandomInteger[]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>आउटपुट&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">123456
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="यदचछक-सखयए-उतपनन-करन-सम-नरदषट">यादृच्छिक संख्याएँ उत्पन्न करना (सीमा निर्दिष्ट)
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">RandomReal[{1, 10}]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>आउटपुट&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">5.6789
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="यदचछक-सखयए-उतपनन-करन-परणक-सम-नरदषट">यादृच्छिक संख्याएँ उत्पन्न करना (पूर्णांक, सीमा निर्दिष्ट)
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">RandomInteger[{1, 10}]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>आउटपुट&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">5
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="यदचछक-सखयए-उतपनन-करन-वतरण-नरदषट">यादृच्छिक संख्याएँ उत्पन्न करना (वितरण निर्दिष्ट)
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">RandomVariate[NormalDistribution[0, 1]]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>आउटपुट&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">0.123456
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="यदचछक-सखयए-उतपनन-करन-वतरण-मतर-नरदषट">यादृच्छिक संख्याएँ उत्पन्न करना (वितरण, मात्रा निर्दिष्ट)
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">RandomVariate[NormalDistribution[0, 1], 10]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>आउटपुट&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{0.123456, 0.234567, ..., 0.987654}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="यदचछक-सखयए-उतपनन-करन-वतरण-मतर-बज-नरदषट">यादृच्छिक संख्याएँ उत्पन्न करना (वितरण, मात्रा, बीज निर्दिष्ट)
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">SeedRandom[12345]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">RandomVariate[NormalDistribution[0, 1], 10]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>आउटपुट&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{0.123456, 0.234567, ..., 0.987654}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="सरण-क-ततव-पर-फकशन-लग-करन">सरणी के तत्वों पर फ़ंक्शन लागू करना
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Map[Sqrt, {1, 4, 9}]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Sqrt /@ {1, 4, 9}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Map[#^(1/2)&amp;amp;, {1, 4, 9}]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>आउटपुट&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{1, 2, 3}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="लमबड-एकसपरशन-क-उपयग-करक-फकशन-परभषत-करन">लैम्ब्डा एक्सप्रेशन का उपयोग करके फ़ंक्शन परिभाषित करना
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">f = Function[x, x^2]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">f[3]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>आउटपुट&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">9
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="फकशन-रचन">फ़ंक्शन रचना
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">f = Function[x, x^2]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">g = Function[x, x + 1]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">h = Function[x, f[g[x]]]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">h[3]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>आउटपुट&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">16
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="पछल-गणन-क-परणम-क-सदरभ-दन">पिछली गणना के परिणाम का संदर्भ देना
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">% + 1
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>आउटपुट&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">17
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="शदध-फकशन">शुद्ध फ़ंक्शन
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">(#+3)&amp;amp;[5]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>आउटपुट&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">8
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="सरण-नषकरषण">सरणी निष्कर्षण
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Select[{1, 2, 3, 4, 5}, EvenQ]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Select[{1, 2, 3, 4, 5}, Mod[#,2]==0&amp;amp;]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>आउटपुट&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{2, 4}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div></description></item><item><title>गणित की अनसुलझी समस्याएँ</title><link>http://kenji.blog/hi/p/ganit-ki-anasuljhi-samasyaen/</link><pubDate>Sat, 02 Mar 2024 22:57:36 +0900</pubDate><guid>http://kenji.blog/hi/p/ganit-ki-anasuljhi-samasyaen/</guid><description>&lt;img src="http://kenji.blog/p/%E6%95%B0%E5%AD%A6%E3%81%AE%E6%9C%AA%E8%A7%A3%E6%B1%BA%E5%95%8F%E9%A1%8C/img.png" alt="Featured image of post गणित की अनसुलझी समस्याएँ" />&lt;h1 id="गणत-क-अनसलझ-समसयए">गणित की अनसुलझी समस्याएँ
&lt;/h1>&lt;p>यहाँ गणित की अनसुलझी समस्याओं के बारे में बताया गया है। हालाँकि समस्याएँ सरल हैं, लेकिन ऐसी कई समस्याएँ हैं जो अभी तक सिद्ध नहीं हुई हैं।&lt;/p>
&lt;h2 id="कय-परण-सखयए-अनत-ह">क्या पूर्ण संख्याएँ अनंत हैं?
&lt;/h2>&lt;p>पूर्ण संख्या वह प्राकृतिक संख्या है जिसके धनात्मक विभाजकों (स्वयं को छोड़कर) का योग स्वयं उस संख्या के बराबर होता है।
उदाहरण के लिए,&lt;/p>
&lt;ul>
&lt;li>6 के विभाजक 1, 2, 3 हैं, और चूँकि 1+2+3=6 है, यह एक पूर्ण संख्या है।&lt;/li>
&lt;li>28 के विभाजक 1, 2, 4, 7, 14 हैं, और चूँकि 1+2+4+7+14=28 है, यह एक पूर्ण संख्या है।&lt;/li>
&lt;/ul>
&lt;p>वर्तमान में केवल 51 पूर्ण संख्याएँ खोजी गई हैं, और यह अनुमान है कि वे अनंत हैं,
लेकिन यह अभी तक सिद्ध नहीं हुआ है।&lt;/p>
&lt;h2 id="गलडबक-अनमन">गोल्डबैक अनुमान
&lt;/h2>&lt;p>गोल्डबैक अनुमान यह है कि 2 से बड़ी प्रत्येक सम संख्या को दो अभाज्य संख्याओं के योग के रूप में व्यक्त किया जा सकता है।
(यहाँ अभाज्य संख्या वह प्राकृतिक संख्या है जिसके 1 और स्वयं के अलावा कोई विभाजक नहीं होते हैं।)&lt;/p>
&lt;p>उदाहरण के लिए,&lt;/p>
&lt;ul>
&lt;li>4=2+2&lt;/li>
&lt;li>6=3+3&lt;/li>
&lt;li>8=3+5&lt;/li>
&lt;li>10=3+7=5+5&lt;/li>
&lt;/ul>
&lt;p>समस्या अपने आप में बहुत सरल है, लेकिन इसे अभी तक सिद्ध नहीं किया गया है।&lt;/p>
&lt;h2 id="रमन-परकलपन">रीमैन परिकल्पना
&lt;/h2>&lt;p>रीमैन परिकल्पना यह अनुमान है कि रीमैन ज़ीटा फ़ंक्शन के शून्य केवल ऋणात्मक सम संख्याएँ और वे सम्मिश्र संख्याएँ हैं जिनका वास्तविक भाग 1/2 है।&lt;/p>
&lt;p>रीमैन ज़ीटा फ़ंक्शन $\zeta$ को इस प्रकार परिभाषित किया गया है, जहाँ $s$ एक सम्मिश्र संख्या है और $n$ एक प्राकृतिक संख्या है:&lt;/p>
$$\zeta(s):=\sum _{n=1}^{\infty }{\frac {1}{n^{s}}}=1+{\frac {1}{2^{s}}}+{\frac {1}{3^{s}}}+{\frac {1}{4^{s}}}+\cdots$$</description></item><item><title>इरेटोस्थनीज की छलनी का उपयोग करके 1000 से कम अभाज्य संख्याओं को सूचीबद्ध करने की विधि</title><link>http://kenji.blog/hi/p/%E0%A4%87%E0%A4%B0%E0%A5%87%E0%A4%9F%E0%A5%8B%E0%A4%B8%E0%A5%8D%E0%A4%A5%E0%A4%A8%E0%A5%80%E0%A4%9C-%E0%A4%95%E0%A5%80-%E0%A4%9B%E0%A4%B2%E0%A4%A8%E0%A5%80-%E0%A4%95%E0%A4%BE-%E0%A4%89%E0%A4%AA%E0%A4%AF%E0%A5%8B%E0%A4%97-%E0%A4%95%E0%A4%B0%E0%A4%95%E0%A5%87-1000-%E0%A4%B8%E0%A5%87-%E0%A4%95%E0%A4%AE-%E0%A4%85%E0%A4%AD%E0%A4%BE%E0%A4%9C%E0%A5%8D%E0%A4%AF-%E0%A4%B8%E0%A4%82%E0%A4%96%E0%A5%8D%E0%A4%AF%E0%A4%BE%E0%A4%93%E0%A4%82-%E0%A4%95%E0%A5%8B-%E0%A4%B8%E0%A5%82%E0%A4%9A%E0%A5%80%E0%A4%AC%E0%A4%A6%E0%A5%8D%E0%A4%A7-%E0%A4%95%E0%A4%B0%E0%A4%A8%E0%A5%87-%E0%A4%95%E0%A5%80-%E0%A4%B5%E0%A4%BF%E0%A4%A7%E0%A4%BF/</link><pubDate>Sun, 09 Apr 2023 12:54:24 +0900</pubDate><guid>http://kenji.blog/hi/p/%E0%A4%87%E0%A4%B0%E0%A5%87%E0%A4%9F%E0%A5%8B%E0%A4%B8%E0%A5%8D%E0%A4%A5%E0%A4%A8%E0%A5%80%E0%A4%9C-%E0%A4%95%E0%A5%80-%E0%A4%9B%E0%A4%B2%E0%A4%A8%E0%A5%80-%E0%A4%95%E0%A4%BE-%E0%A4%89%E0%A4%AA%E0%A4%AF%E0%A5%8B%E0%A4%97-%E0%A4%95%E0%A4%B0%E0%A4%95%E0%A5%87-1000-%E0%A4%B8%E0%A5%87-%E0%A4%95%E0%A4%AE-%E0%A4%85%E0%A4%AD%E0%A4%BE%E0%A4%9C%E0%A5%8D%E0%A4%AF-%E0%A4%B8%E0%A4%82%E0%A4%96%E0%A5%8D%E0%A4%AF%E0%A4%BE%E0%A4%93%E0%A4%82-%E0%A4%95%E0%A5%8B-%E0%A4%B8%E0%A5%82%E0%A4%9A%E0%A5%80%E0%A4%AC%E0%A4%A6%E0%A5%8D%E0%A4%A7-%E0%A4%95%E0%A4%B0%E0%A4%A8%E0%A5%87-%E0%A4%95%E0%A5%80-%E0%A4%B5%E0%A4%BF%E0%A4%A7%E0%A4%BF/</guid><description>&lt;img src="http://kenji.blog/p/%E3%82%A8%E3%83%A9%E3%83%88%E3%82%B9%E3%83%86%E3%83%8D%E3%82%B9%E3%81%AE%E7%AF%A9%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A61000%E4%BB%A5%E4%B8%8B%E3%81%AE%E7%B4%A0%E6%95%B0%E3%82%92%E5%88%97%E6%8C%99%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img.png" alt="Featured image of post इरेटोस्थनीज की छलनी का उपयोग करके 1000 से कम अभाज्य संख्याओं को सूचीबद्ध करने की विधि" />&lt;h2 id="इरटसथनज-क-छलन-कय-ह">इरेटोस्थनीज की छलनी क्या है?
&lt;/h2>&lt;p>इरेटोस्थनीज की छलनी एक एल्गोरिथ्म है जो किसी दी गई संख्या से छोटे सभी अभाज्य संख्याओं (prime numbers) को सूचीबद्ध करता है।
यह एल्गोरिथ्म सरल है और इसे निम्नलिखित चरणों में लागू किया जा सकता है:&lt;/p>
&lt;ol>
&lt;li>N तत्वों वाली एक बूलियन ऐरे बनाएँ और सभी तत्वों को true से इनिशियलाइज़ करें।&lt;/li>
&lt;li>ऐरे के 0वें और 1ले तत्व को false सेट करें (क्योंकि 0 और 1 अभाज्य नहीं हैं)।&lt;/li>
&lt;li>यदि ऐरे का दूसरा तत्व true है, तो 2 को अभाज्य के रूप में आउटपुट करें।&lt;/li>
&lt;li>ऐरे में $2^2$ और उससे अधिक 2 के गुणजों (multiples) वाले तत्वों को false सेट करें ※&lt;/li>
&lt;li>यदि ऐरे का तीसरा तत्व true है, तो 3 को अभाज्य के रूप में आउटपुट करें।&lt;/li>
&lt;li>ऐरे में $3^2$ और उससे अधिक 3 के गुणजों वाले तत्वों को false सेट करें।&lt;/li>
&lt;li>चौथे, 5वें, &amp;hellip;, Nवें तत्वों के लिए यही प्रक्रिया दोहराएँ।&lt;/li>
&lt;/ol>
&lt;p>※ हम वर्गों (squares) से ऊपर के तत्वों को false सेट करते हैं क्योंकि वर्ग से छोटी संख्याओं पर पहले ही प्रक्रिया हो चुकी होती है।&lt;/p>
&lt;p>&lt;img src="http://kenji.blog/p/%E3%82%A8%E3%83%A9%E3%83%88%E3%82%B9%E3%83%86%E3%83%8D%E3%82%B9%E3%81%AE%E7%AF%A9%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A61000%E4%BB%A5%E4%B8%8B%E3%81%AE%E7%B4%A0%E6%95%B0%E3%82%92%E5%88%97%E6%8C%99%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/Animation_Sieb_des_Eratosthenes.gif"
width="445"
height="369"
srcset="http://kenji.blog/p/%E3%82%A8%E3%83%A9%E3%83%88%E3%82%B9%E3%83%86%E3%83%8D%E3%82%B9%E3%81%AE%E7%AF%A9%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A61000%E4%BB%A5%E4%B8%8B%E3%81%AE%E7%B4%A0%E6%95%B0%E3%82%92%E5%88%97%E6%8C%99%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/Animation_Sieb_des_Eratosthenes_hua63c6218ac9f9cdba93ccb20db392e0e_206214_480x0_resize_box_1.gif 480w, http://kenji.blog/p/%E3%82%A8%E3%83%A9%E3%83%88%E3%82%B9%E3%83%86%E3%83%8D%E3%82%B9%E3%81%AE%E7%AF%A9%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A61000%E4%BB%A5%E4%B8%8B%E3%81%AE%E7%B4%A0%E6%95%B0%E3%82%92%E5%88%97%E6%8C%99%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/Animation_Sieb_des_Eratosthenes_hua63c6218ac9f9cdba93ccb20db392e0e_206214_1024x0_resize_box_1.gif 1024w"
loading="lazy"
class="gallery-image"
data-flex-grow="120"
data-flex-basis="289px"
>&lt;/p>
&lt;h2 id="rust-म-करयनवयन">Rust में कार्यान्वयन
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">fn main() {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> let n = 1000;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> let mut is_prime = vec![true; n+1];
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> is_prime[0] = false;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> is_prime[1] = false;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> for i in 2..=n {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> if is_prime[i] {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> println!(&amp;#34;{}&amp;#34;, i);
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> let mut j = i * i;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> while j &amp;lt;= n {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> is_prime[j] = false;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> j += i;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> }
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> }
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> }
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="थड-अनकलत-ससकरण">थोड़ा अनुकूलित संस्करण
&lt;/h2>&lt;p>निम्नलिखित बिंदुओं को ध्यान में रखते हुए, हम थोड़ा तेज़ कार्यान्वयन बना सकते हैं:&lt;/p>
&lt;ul>
&lt;li>ऐरे को true के बजाय false से इनिशियलाइज़ करें (यह तेज़ है)।&lt;/li>
&lt;li>चूँकि 2 के गुणज अभाज्य नहीं होते हैं, इसलिए 2 के गुणजों को false सेट करने की प्रक्रिया को छोड़ दें।&lt;/li>
&lt;li>n तक लूप करने की आवश्यकता नहीं है; n के वर्गमूल तक अभाज्य संख्याओं को सूचीबद्ध करना, n से छोटे या उसके बराबर सभी अभाज्यों को खोजने के लिए पर्याप्त है।&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">fn main() {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> let n = 1000;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> let mut is_prime = vec![false; n+1];
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> is_prime[2] = true;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> for i in (3..=n).step_by(2) {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> is_prime[i] = true;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> }
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> for i in 3..=((n as f64).sqrt() as usize) {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> if is_prime[i] {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> let mut j = i * i;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> while j &amp;lt;= n {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> is_prime[j] = false;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> j += i * 2;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> }
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> }
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> }
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> for i in (2..=n).filter(|&amp;amp;x| is_prime[x]) {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> println!(&amp;#34;{}&amp;#34;, i);
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> }
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="सदरभ">संदर्भ
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%A9%E3%83%88%E3%82%B9%E3%83%86%E3%83%8D%E3%82%B9%E3%81%AE%E7%AF%A9" target="_blank" rel="noopener"
>इरेटोस्थनीज की छलनी&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Python (matplotlib.pyplot) का उपयोग करके ग्राफ़ कैसे बनाएं</title><link>http://kenji.blog/hi/p/python-matplotlib.pyplot-%E0%A4%95%E0%A4%BE-%E0%A4%89%E0%A4%AA%E0%A4%AF%E0%A5%8B%E0%A4%97-%E0%A4%95%E0%A4%B0%E0%A4%95%E0%A5%87-%E0%A4%97%E0%A5%8D%E0%A4%B0%E0%A4%BE%E0%A4%AB%E0%A4%BC-%E0%A4%95%E0%A5%88%E0%A4%B8%E0%A5%87-%E0%A4%AC%E0%A4%A8%E0%A4%BE%E0%A4%8F%E0%A4%82/</link><pubDate>Sun, 09 Apr 2023 01:02:19 +0900</pubDate><guid>http://kenji.blog/hi/p/python-matplotlib.pyplot-%E0%A4%95%E0%A4%BE-%E0%A4%89%E0%A4%AA%E0%A4%AF%E0%A5%8B%E0%A4%97-%E0%A4%95%E0%A4%B0%E0%A4%95%E0%A5%87-%E0%A4%97%E0%A5%8D%E0%A4%B0%E0%A4%BE%E0%A4%AB%E0%A4%BC-%E0%A4%95%E0%A5%88%E0%A4%B8%E0%A5%87-%E0%A4%AC%E0%A4%A8%E0%A4%BE%E0%A4%8F%E0%A4%82/</guid><description>&lt;img src="http://kenji.blog/p/pythonmatplotlib.pyplot%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%B0%E3%83%A9%E3%83%95%E3%82%92%E6%8F%8F%E7%94%BB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img.png" alt="Featured image of post Python (matplotlib.pyplot) का उपयोग करके ग्राफ़ कैसे बनाएं" />&lt;p>&lt;img src="http://kenji.blog/p/pythonmatplotlib.pyplot%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%B0%E3%83%A9%E3%83%95%E3%82%92%E6%8F%8F%E7%94%BB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_1.png"
width="1200"
height="288"
srcset="http://kenji.blog/p/pythonmatplotlib.pyplot%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%B0%E3%83%A9%E3%83%95%E3%82%92%E6%8F%8F%E7%94%BB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_1_hue3f23818eeeec9c43d6452cc0f61fb52_43864_480x0_resize_box_3.png 480w, http://kenji.blog/p/pythonmatplotlib.pyplot%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%B0%E3%83%A9%E3%83%95%E3%82%92%E6%8F%8F%E7%94%BB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_1_hue3f23818eeeec9c43d6452cc0f61fb52_43864_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="416"
data-flex-basis="1000px"
>&lt;/p>
&lt;h1 id="आपक-कय-चहए">आपको क्या चाहिए
&lt;/h1>&lt;ul>
&lt;li>Google खाता&lt;/li>
&lt;/ul>
&lt;h1 id="चरण">चरण
&lt;/h1>&lt;ol>
&lt;li>&lt;a class="link" href="https://colab.research.google.com/" target="_blank" rel="noopener"
>https://colab.research.google.com/&lt;/a> पर जाएं&lt;/li>
&lt;li>&amp;ldquo;फ़ाइल&amp;rdquo; -&amp;gt; &amp;ldquo;नई नोटबुक&amp;rdquo; चुनें&lt;/li>
&lt;li>नीचे दिए गए कोड को पेस्ट करें और चलाएं&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">matplotlib.pyplot&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">plt&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">numpy&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">np&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">x&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">linspace&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">pi&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">500&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">plt&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">plot&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">sin&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="n">label&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;sin curve&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">plt&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">plot&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">cos&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="n">label&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;cos curve&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">plt&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">legend&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="c1"># लीजेंड दिखाएं&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">plt&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">show&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h1 id="नषपदन-परणम">निष्पादन परिणाम
&lt;/h1>&lt;p>&lt;img src="http://kenji.blog/p/pythonmatplotlib.pyplot%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%B0%E3%83%A9%E3%83%95%E3%82%92%E6%8F%8F%E7%94%BB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img.png"
width="568"
height="413"
srcset="http://kenji.blog/p/pythonmatplotlib.pyplot%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%B0%E3%83%A9%E3%83%95%E3%82%92%E6%8F%8F%E7%94%BB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_hucdb24ab588d845f9f7a56ef99be2c709_27745_480x0_resize_box_3.png 480w, http://kenji.blog/p/pythonmatplotlib.pyplot%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%B0%E3%83%A9%E3%83%95%E3%82%92%E6%8F%8F%E7%94%BB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img_hucdb24ab588d845f9f7a56ef99be2c709_27745_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img.png"
class="gallery-image"
data-flex-grow="137"
data-flex-basis="330px"
>&lt;/p>
&lt;h1 id="सदरभ">संदर्भ
&lt;/h1>&lt;ul>
&lt;li>&lt;a class="link" href="https://matplotlib.org/3.5.3/api/_as_gen/matplotlib.pyplot.html" target="_blank" rel="noopener"
>matplotlib.pyplot — Matplotlib 3.5.3 documentation&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>मुझे गणित और कंप्यूटर क्यों पसंद हैं</title><link>http://kenji.blog/hi/p/%E3%81%AA%E3%81%9C%E6%95%B0%E5%AD%A6%E3%82%84%E8%A8%88%E7%AE%97%E6%A9%9F%E3%81%8C%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%93%E3%81%A0%E3%82%8D%E3%81%86/</link><pubDate>Fri, 23 Sep 2022 01:56:52 +0900</pubDate><guid>http://kenji.blog/hi/p/%E3%81%AA%E3%81%9C%E6%95%B0%E5%AD%A6%E3%82%84%E8%A8%88%E7%AE%97%E6%A9%9F%E3%81%8C%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%93%E3%81%A0%E3%82%8D%E3%81%86/</guid><description>&lt;img src="http://kenji.blog/p/%E3%81%AA%E3%81%9C%E6%95%B0%E5%AD%A6%E3%82%84%E8%A8%88%E7%AE%97%E6%A9%9F%E3%81%8C%E5%A5%BD%E3%81%8D%E3%81%AA%E3%82%93%E3%81%A0%E3%82%8D%E3%81%86/img.png" alt="Featured image of post मुझे गणित और कंप्यूटर क्यों पसंद हैं" />&lt;h2 id="मन-सच-क-मझ-गणत-और-कपयटर-कय-पसद-ह">मैंने सोचा कि मुझे गणित और कंप्यूटर क्यों पसंद हैं
&lt;/h2>&lt;h3 id="सभ-क-लए-समन">सभी के लिए समान
&lt;/h3>&lt;p>यह हमेशा एक ही इनपुट के लिए एक ही आउटपुट देता है, चाहे व्यक्ति, स्थिति या स्थान कुछ भी हो।&lt;/p>
&lt;h3 id="सपषट-नयम">स्पष्ट नियम
&lt;/h3>&lt;p>नियम स्पष्ट रूप से परिभाषित हैं और कोई बेतुकापन या अन्याय नहीं है।&lt;/p>
&lt;h3 id="वयतपनन-उततर-और-सदधत-हमश-क-लए-सह-ह">व्युत्पन्न उत्तर और सिद्धांत हमेशा के लिए सही हैं
&lt;/h3>&lt;p>एक बार निकाले गए उत्तर के बाद में फिर से लिखे जाने की चिंता करने की आवश्यकता नहीं है।&lt;/p>
&lt;h3 id="एक-मधयम-कठनई-ह">एक मध्यम कठिनाई है
&lt;/h3>&lt;p>हमेशा अनसुलझी समस्याएं होती हैं, और आप किसी भी समय समस्या समाधान को चुनौती दे सकते हैं।&lt;/p></description></item><item><title>गणित के महान लोग</title><link>http://kenji.blog/hi/p/%E0%A4%97%E0%A4%A3%E0%A4%BF%E0%A4%A4-%E0%A4%95%E0%A5%87-%E0%A4%AE%E0%A4%B9%E0%A4%BE%E0%A4%A8-%E0%A4%B2%E0%A5%8B%E0%A4%97/</link><pubDate>Thu, 22 Sep 2022 23:06:37 +0900</pubDate><guid>http://kenji.blog/hi/p/%E0%A4%97%E0%A4%A3%E0%A4%BF%E0%A4%A4-%E0%A4%95%E0%A5%87-%E0%A4%AE%E0%A4%B9%E0%A4%BE%E0%A4%A8-%E0%A4%B2%E0%A5%8B%E0%A4%97/</guid><description>&lt;img src="http://kenji.blog/p/%E6%95%B0%E5%AD%A6%E3%81%AE%E5%81%89%E4%BA%BA%E3%81%9F%E3%81%A1/img.png" alt="Featured image of post गणित के महान लोग" />&lt;h3 id="फरम-p-de-fermat-1601-1665">फेरमा (P, de Fermat, 1601-1665)
&lt;/h3>&lt;p>17वीं सदी के फ्रांस के महान गणितज्ञ। विश्लेषणात्मक ज्यामिति, प्रायिकता सिद्धांत और कलन की नींव रखी। वे संख्या सिद्धांत के जनक भी हैं।&lt;/p>
&lt;h3 id="डयफटस-diophantus-207-क-आसपस-291-क-आसपस">डायोफैंटस (Diophantus, 207 के आसपास-291 के आसपास)
&lt;/h3>&lt;p>यूनानी गणितज्ञ। प्रतीकों का परिचय देने और परिमेय संख्या समाधान के अध्ययन के लिए प्रसिद्ध। उनकी पुस्तक &amp;lsquo;अरिथमेटिका&amp;rsquo; प्रमुख कृति है। समीकरणों के परिमेय समाधान खोजने के क्षेत्र को डायोफैंटाइन विश्लेषण कहा जाता है।&lt;/p>
&lt;h3 id="यलर-l-euler-1707-1783">यूलर (L. Euler, 1707-1783)
&lt;/h3>&lt;p>स्विट्जरलैंड में जन्मे गणित के राजा। गणित के हर संभव क्षेत्र में उपलब्धियां हासिल कीं। 700 से अधिक शोध पत्र और 45 पुस्तकें छोड़ीं।&lt;/p>
&lt;h3 id="लजडर-a-m-legendre-1752-1833">लीजेंड्रे (A. M. Legendre, 1752-1833)
&lt;/h3>&lt;p>फ्रांसीसी गणितज्ञ। संख्या सिद्धांत, अण्डाकार अभिन्न, और गुरुत्वाकर्षण समस्याओं में कई उपलब्धियां छोड़ीं। &amp;ldquo;संख्या सिद्धांत&amp;rdquo; शब्द उनकी मुख्य पुस्तक &amp;lsquo;संख्या सिद्धांत&amp;rsquo; से आया है।&lt;/p>
&lt;h3 id="कमर-e-e-kummer-1810-1893">कुमेर (E. E. Kummer, 1810-1893)
&lt;/h3>&lt;p>जर्मन गणितज्ञ। फेरमा के अंतिम प्रमेय में साइक्लोटॉमिक क्षेत्र के संख्या सिद्धांत को लागू करके बड़ी सफलता प्राप्त की।&lt;/p>
&lt;h3 id="डसकरटस-r-descartes-1596-1650">डेसकार्टेस (R. Descartes, 1596-1650)
&lt;/h3>&lt;p>फ्रांस के मौलिक दार्शनिक। प्रमुख रचनाओं में &amp;lsquo;प्रणाली पर प्रवचन&amp;rsquo;, &amp;lsquo;ज्यामिति&amp;rsquo; और &amp;lsquo;ब्रह्मांड विज्ञान&amp;rsquo; शामिल हैं।&lt;/p>
&lt;h3 id="पसकल-b-pascal-1623-1662">पास्कल (B. Pascal, 1623-1662)
&lt;/h3>&lt;p>प्रायिकता सिद्धांत और तरल पदार्थों के अध्ययन के लिए जाने जाने वाले फ्रांसीसी दार्शनिक। बाद में जैनसेनिस्टों में शामिल हो गए और धार्मिक गतिविधियों में संलग्न हुए। &amp;lsquo;पेंसेज़&amp;rsquo; उस समय की उनकी रचना है।&lt;/p>
&lt;h3 id="बचट-c-g-bachet-1581-1638">बाचेट (C. G. Bachet, 1581-1638)
&lt;/h3>&lt;p>फ्रांसीसी रईस जिन्होंने एक शौक के रूप में संख्या पहेली का अध्ययन किया। डायोफैंटस की &amp;lsquo;अरिथमेटिका&amp;rsquo; का लैटिन अनुवाद प्रकाशित किया, और उसमें अपने शोध को टिप्पणियों के रूप में शामिल किया।&lt;/p>
&lt;h3 id="वलस-j-wallis-1616-1703">वालिस (J. Wallis, 1616-1703)
&lt;/h3>&lt;p>अंग्रेजी गणितज्ञ। अपनी प्रमुख कृति &amp;lsquo;अनंत का अंकगणित&amp;rsquo; में गणितीय रूप में सीमा की अवधारणा दी और कलन की नींव रखने में योगदान दिया।&lt;/p>
&lt;h3 id="बरउनकर-w-brouncker-1620-1684">ब्राउनकर (W. Brouncker, 1620-1684)
&lt;/h3>&lt;p>आयरिश रईस। रॉयल सोसाइटी (ब्रिटिश अकादमी) के पहले अध्यक्ष। वे गणित के प्रति उत्साही थे और वालिस जैसे लोगों से बातचीत करते थे।&lt;/p>
&lt;h3 id="लगरज-j-l-lagrange-1736-1813">लैग्रेंज (J. L. Lagrange, 1736-1813)
&lt;/h3>&lt;p>इटली में जन्मे फ्रांसीसी गणितज्ञ। यूलर के उत्तराधिकारी के रूप में बर्लिन अकादमी में गणित विभाग के निदेशक के रूप में कार्य किया। संख्या सिद्धांत और विश्लेषणात्मक यांत्रिकी में प्रमुख उपलब्धियां हासिल कीं।&lt;/p>
&lt;h3 id="सगल-c-l-siegel-1896-1981">सीगल (C. L. Siegel, 1896-1981)
&lt;/h3>&lt;p>जर्मन संख्या सिद्धांतकार। संख्याओं के विश्लेषणात्मक सिद्धांत में कई योगदान दिए।&lt;/p>
&lt;h3 id="फइबनच-l-fibonacci-1175-क-आसपस-1250-क-आसपस">फाइबोनैचि (L. Fibonacci, 1175 के आसपास-1250 के आसपास)
&lt;/h3>&lt;p>इतालवी गणितज्ञ। अपनी मुख्य कृति &amp;lsquo;लिबर एबसी&amp;rsquo; में इंडो-अरबी अंकों का उपयोग किया और उनके प्रसार के लिए काम किया। साथ ही, &amp;lsquo;बुक ऑफ स्क्वायर्स&amp;rsquo; में सर्वांगसम संख्याओं पर चर्चा की।&lt;/p>
&lt;h3 id="बकर-a-baker-1939-">बेकर (A. Baker, 1939-)
&lt;/h3>&lt;p>ब्रिटिश संख्या सिद्धांतकार। पारलौकिक संख्या सिद्धांत में उनके योगदान के लिए उन्हें हीसुके हिरोनाका के साथ फील्ड्स मेडल से सम्मानित किया गया था।&lt;/p>
&lt;h3 id="पकर-j-poincare-1854-1912">पोंकारे (J. Poincare, 1854-1912)
&lt;/h3>&lt;p>अंतिम सार्वभौमिक गणितज्ञ कहलाने वाले फ्रांसीसी गणितज्ञ। ऑटोमॉर्फिक फ़ंक्शंस, गैर-यूक्लिडियन ज्यामिति, अंतर समीकरण, आकाशीय यांत्रिकी और विद्युत गतिशीलता के साथ-साथ वैज्ञानिक टिप्पणियों सहित उत्कृष्ट रचनाएँ छोड़ीं।&lt;/p>
&lt;h3 id="मरडल-l-j-mordell-1888-1972">मोर्डेल (L. J. Mordell, 1888-1972)
&lt;/h3>&lt;p>अमेरिकी मूल के गणितज्ञ। माता-पिता लिथुआनिया के आप्रवासी थे। डायोफैंटाइन समीकरणों के सिद्धांत पर कई पत्र लिखे हैं, लेकिन अण्डाकार घटता के सिद्धांत में मोर्डेल का प्रमेय विशेष रूप से प्रसिद्ध है। वेइल ने इसे सामान्य बीजीय वक्रों के मामले में विस्तारित किया, और यहाँ से अंकगणितीय बीजीय ज्यामिति का विस्फोटक विकास शुरू हुआ।&lt;/p>
&lt;h3 id="वइल-a-weil-1906-">वेइल (A. Weil, 1906-)
&lt;/h3>&lt;p>यहूदी मूल के फ्रांसीसी गणितज्ञ। जब वे छोटे थे, तो उनकी फेरमा समस्या में रुचि थी, और उन्होंने संख्या सिद्धांत में इसे लागू करने के उद्देश्य से बीजीय ज्यामिति की मौलिक समीक्षा की, और एक सख्त नींव रखी। वे गणित के इतिहास पर अपने काम के लिए भी जाने जाते हैं।&lt;/p>
&lt;h3 id="मरसन-m-mersenne-1588-1648">मेर्सन (M. Mersenne, 1588-1648)
&lt;/h3>&lt;p>फ्रांसीसी मिनिम आदेश के पुजारी। उन्होंने विभिन्न स्थानों के गणितज्ञों के बीच पत्राचार का समन्वय किया। मेर्सन संख्या भी वास्तव में फेरमा द्वारा सोची गई एक संख्या है।&lt;/p>
&lt;h3 id="रबरवल-g-p-de-roberval-1602-1675">रोबरवाल (G. P. de Roberval, 1602-1675)
&lt;/h3>&lt;p>फ्रांसीसी गणितज्ञ। उस समय, वे लगभग एकमात्र व्यक्ति थे जिन्हें एक गणितज्ञ के रूप में प्रोफेसर का पद मिला था, और वे साइक्लोइड के अपने अध्ययन के लिए जाने जाते हैं।&lt;/p>
&lt;h3 id="एबल-n-h-abel-1802-1829">एबेल (N. H. Abel, 1802-1829)
&lt;/h3>&lt;p>नॉर्वेजियन गणितज्ञ। सामान्य 5-डिग्री समीकरणों की अघुलनशीलता, अण्डाकार कार्य सिद्धांत, और हाबिलियन अभिन्न सिद्धांत जैसी उत्कृष्ट उपलब्धियां हासिल कीं, लेकिन कम उम्र में मृत्यु हो गई।&lt;/p>
&lt;h3 id="जकब-k-g-jacob-1804-1851">जैकोबी (K. G. Jacob, 1804-1851)
&lt;/h3>&lt;p>यहूदी मूल के जर्मन गणितज्ञ। अण्डाकार कार्य सिद्धांत, थीटा फ़ंक्शन सिद्धांत, अंतर समीकरण और भिन्नताओं के कलन में प्रमुख उपलब्धियां छोड़ीं। उन्होंने एबेल के काम को दुनिया के सामने पेश किया। विज्ञान का उद्देश्य &amp;ldquo;मानव मन का सम्मान&amp;rdquo; माना और उपयोगितावाद को खारिज करने के लिए जाने जाते हैं।&lt;/p>
&lt;h3 id="गस-c-f-gauss-1777-1855">गॉस (C. F. Gauss, 1777-1855)
&lt;/h3>&lt;p>जर्मनी में जन्मे गणित के राजा। संख्या सिद्धांत, गैर-यूक्लिडियन ज्यामिति, भूगणित, हाइपरजियोमेट्रिक श्रृंखला, सतह सिद्धांत और भू-चुंबकत्व के अध्ययन के लिए जाने जाते हैं। वे एक पूर्णतावादी थे और कहा जाता है कि जब तक काम इतना परिपूर्ण नहीं हो जाता था कि उसका आधार भी न दिखे, तब तक वे परिणाम प्रकाशित नहीं करते थे। प्रमुख कृति &amp;lsquo;अरिथमेटिकल इन्वेस्टिगेशन&amp;rsquo; आदि।&lt;/p>
&lt;h3 id="लम-g-lame-1795-1870">लामे (G. Lame, 1795-1870)
&lt;/h3>&lt;p>फ्रांसीसी गणितज्ञ। लोच के सिद्धांत, गर्मी चालन के सिद्धांत आदि में योगदान दिया।&lt;/p>
&lt;h3 id="लउवल-j-liouville-1809-1882">लिउविल (J. Liouville, 1809-1882)
&lt;/h3>&lt;p>फ्रांसीसी गणितज्ञ। विभेदक समीकरण, पारलौकिक संख्या सिद्धांत और कार्य सिद्धांत में योगदान दिया।&lt;/p>
&lt;h3 id="कच-a-l-cauchy-1789-1857">कॉची (A. L. Cauchy, 1789-1857)
&lt;/h3>&lt;p>फ्रांसीसी गणितज्ञ। बहुत विपुल थे और सैद्धांतिक भौतिकी और गणित में कई उपलब्धियां हासिल कीं। कहा जाता है कि फ्रांस में उनका गॉस के बराबर सम्मान किया जाता है।&lt;/p>
&lt;h3 id="गलव-e-galois-1811-1832">गैलवा (E. Galois, 1811-1832)
&lt;/h3>&lt;p>फ्रांसीसी गणितज्ञ। एबेल के प्रमेय को स्पष्ट किया कि समूह की अवधारणा को पेश करके 5 डिग्री या उससे अधिक के समीकरणों को आम तौर पर बीजगणितीय रूप से हल नहीं किया जा सकता है। एक द्वंद्वयुद्ध में कम उम्र में मारे गए, लेकिन अब यह ज्ञात है कि इसका कारण एक तुच्छ महिला समस्या थी।&lt;/p>
&lt;h3 id="हसल-k-hensel-1861-1941">हेंसल (K, Hensel, 1861-1941)
&lt;/h3>&lt;p>जर्मन गणितज्ञ। क्रोनकर के छात्र। कार्य-सैद्धांतिक तरीकों को लागू करके, उन्होंने संख्या सिद्धांत में पी-एडिक (p-adic) संख्या प्रणाली का सिद्धांत पेश किया।&lt;/p>
&lt;h3 id="हस-h-hesse-1898-1979">हेसे (H. Hesse, 1898-1979)
&lt;/h3>&lt;p>जर्मन गणितज्ञ। हेंसल के छात्र, जिन्होंने p-adic विश्लेषण की नींव और इसके अनुप्रयोगों में योगदान दिया। वर्ग क्षेत्र सिद्धांत का विकास, अण्डाकार वक्रों के एल-फ़ंक्शन का अध्ययन, आदि।&lt;/p>
&lt;h3 id="करनकर-l-kronecker-1823-1891">क्रोनकर (L. Kronecker, 1823-1891)
&lt;/h3>&lt;p>यहूदी मूल के जर्मन गणितज्ञ। अण्डाकार कार्य सिद्धांत, संख्या सिद्धांत, आदि में योगदान दिया। गणित की अंकगणितीय नींव की वकालत करने के लिए जाने जाते हैं, लेकिन उनके अत्यधिक व्यक्तिपरक व्यक्तित्व के कारण, बर्लिन विश्वविद्यालय में उनके सहयोगी वीयरस्ट्रास की अनुचित आलोचना और कैंटर के रोजगार में बाधा ने उनके जीवन पर एक नकारात्मक प्रभाव डाला है।&lt;/p>
&lt;h3 id="हलबरट-d-hilbert-1862-1943">हिल्बर्ट (D. Hilbert, 1862-1943)
&lt;/h3>&lt;p>जर्मन गणितज्ञ। अपरिवर्तनीय सिद्धांत, बीजीय संख्या सिद्धांत और गणित की नींव सहित गणित के हर क्षेत्र में एक विशाल पदचिह्न छोड़ा। 1900 में पेरिस में गणितज्ञों की अंतर्राष्ट्रीय कांग्रेस में उनके द्वारा प्रस्तावित 23 समस्याओं का गणित के विकास पर गहरा प्रभाव पड़ा।&lt;/p>
&lt;h3 id="रमन-b-riemann-1826-1866">रीमैन (B. Riemann, 1826-1866)
&lt;/h3>&lt;p>जर्मन गणितज्ञ। जटिल कार्य सिद्धांत में रीमैन सतहों की अवधारणा, रीमैन ज्यामिति आदि जैसे गणित की नींव से संबंधित प्रमुख उपलब्धियां हासिल कीं।&lt;/p>
&lt;h3 id="फलटगस-g-faltings-1954-">फाल्टिंग्स (G. Faltings, 1954-)
&lt;/h3>&lt;p>जर्मन गणितज्ञ। 1983 में मोर्डेल अनुमान का समाधान किया।&lt;/p>
&lt;h3 id="वलस-a-wiles-1953-">विल्स (A, Wiles, 1953-)
&lt;/h3>&lt;p>ब्रिटिश मूल के गणितज्ञ। इवासावा के मुख्य अनुमान और बर्च और स्विनर्टन-डायर अनुमान के शोध में प्रमुख योगदान दिया, इस क्षेत्र में वे अग्रणी हैं।&lt;/p>
&lt;h3 id="सदरभ">संदर्भ
&lt;/h3>&lt;p>फ़र्मेट का अंतिम प्रमेय हल हो गया! यूलर से वाइल्स के प्रमाण तक कोदन्शा&lt;/p></description></item><item><title>गणितज्ञों वाली फिल्में</title><link>http://kenji.blog/hi/p/%E6%95%B0%E5%AD%A6%E8%80%85%E3%81%8C%E7%99%BB%E5%A0%B4%E3%81%99%E3%82%8B%E6%98%A0%E7%94%BB/</link><pubDate>Mon, 05 Sep 2022 10:41:00 +0900</pubDate><guid>http://kenji.blog/hi/p/%E6%95%B0%E5%AD%A6%E8%80%85%E3%81%8C%E7%99%BB%E5%A0%B4%E3%81%99%E3%82%8B%E6%98%A0%E7%94%BB/</guid><description>&lt;img src="http://kenji.blog/p/%E6%95%B0%E5%AD%A6%E8%80%85%E3%81%8C%E7%99%BB%E5%A0%B4%E3%81%99%E3%82%8B%E6%98%A0%E7%94%BB/images/img.png" alt="Featured image of post गणितज्ञों वाली फिल्में" />&lt;p>यहाँ मेरी अनुशंसित 3 फिल्में हैं जिनमें मुख्य पात्र गणितज्ञ हैं।&lt;/p>
&lt;h1 id="ए-बयटफल-मइड">ए ब्यूटीफुल माइंड
&lt;/h1>&lt;p>&lt;img src="http://kenji.blog/images/beautiful_mind.jpg"
loading="lazy"
>&lt;br>
यह एक वास्तविक अमेरिकी प्रतिभाशाली गणितज्ञ के आधे जीवन को दर्शाने वाली फिल्म है। अंत में एक आश्चर्यजनक मोड़ है।
रसेल क्रो ने मुख्य भूमिका में बेहतरीन काम किया है।&lt;/p>
&lt;h1 id="एनगम">एनिग्मा
&lt;/h1>&lt;p>&lt;img src="http://kenji.blog/images/enigma.jpg"
loading="lazy"
>&lt;/p>
&lt;blockquote>
&lt;p>2001 में रिलीज़ हुई फिल्म, जो रॉबर्ट हैरिस के उपन्यास &amp;ldquo;एनिग्मा&amp;rdquo; पर आधारित है।
विकिपीडिया से&lt;/p>
&lt;/blockquote>
&lt;p>यह जर्मनी द्वारा बनाई गई एनिग्मा एन्क्रिप्शन मशीन को डिक्रिप्ट करने की कहानी है।&lt;/p>
&lt;h1 id="द-इमटशन-गम">द इमिटेशन गेम
&lt;/h1>&lt;p>&lt;img src="http://kenji.blog/images/imitation_game.jpg"
loading="lazy"
>&lt;/p>
&lt;p>यह भी एनिग्मा से जुड़ी एक डिक्रिप्शन कहानी है। मुझे उस समय की दुनिया बहुत पसंद है।&lt;/p>
&lt;h1 id="द-मन-ह-नय-इनफनट">द मैन हू न्यू इन्फिनिटी
&lt;/h1>&lt;p>&lt;img src="http://kenji.blog/p/%E6%95%B0%E5%AD%A6%E8%80%85%E3%81%8C%E7%99%BB%E5%A0%B4%E3%81%99%E3%82%8B%E6%98%A0%E7%94%BB/img.png"
width="566"
height="800"
srcset="http://kenji.blog/p/%E6%95%B0%E5%AD%A6%E8%80%85%E3%81%8C%E7%99%BB%E5%A0%B4%E3%81%99%E3%82%8B%E6%98%A0%E7%94%BB/img_hu224d39544ca0af082720aacd7902fd19_1089949_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E6%95%B0%E5%AD%A6%E8%80%85%E3%81%8C%E7%99%BB%E5%A0%B4%E3%81%99%E3%82%8B%E6%98%A0%E7%94%BB/img_hu224d39544ca0af082720aacd7902fd19_1089949_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img.png"
class="gallery-image"
data-flex-grow="70"
data-flex-basis="169px"
>&lt;/p>
&lt;p>कैम्ब्रिज विश्वविद्यालय के गणितज्ञ हार्डी और भारतीय गणितज्ञ रामानुजन के बीच बातचीत को दर्शाने वाली फिल्म। आप इसमें गणित की सुंदरता को महसूस कर सकते हैं।&lt;/p>
&lt;h1 id="द-थयर-ऑफ-एवरथग">द थ्योरी ऑफ एवरीथिंग
&lt;/h1>&lt;p>&lt;img src="http://kenji.blog/p/%E6%95%B0%E5%AD%A6%E8%80%85%E3%81%8C%E7%99%BB%E5%A0%B4%E3%81%99%E3%82%8B%E6%98%A0%E7%94%BB/img_1.png"
width="800"
height="459"
srcset="http://kenji.blog/p/%E6%95%B0%E5%AD%A6%E8%80%85%E3%81%8C%E7%99%BB%E5%A0%B4%E3%81%99%E3%82%8B%E6%98%A0%E7%94%BB/img_1_hubfe00de5360673c8281820134bf7a309_739706_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E6%95%B0%E5%AD%A6%E8%80%85%E3%81%8C%E7%99%BB%E5%A0%B4%E3%81%99%E3%82%8B%E6%98%A0%E7%94%BB/img_1_hubfe00de5360673c8281820134bf7a309_739706_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_1.png"
class="gallery-image"
data-flex-grow="174"
data-flex-basis="418px"
>&lt;/p>
&lt;p>डॉ. हॉकिंग के जीवन को दर्शाने वाली फिल्म।&lt;/p>
&lt;h1 id="परटकल-फवर">पार्टिकल फीवर
&lt;/h1>&lt;p>&lt;img src="http://kenji.blog/p/%E6%95%B0%E5%AD%A6%E8%80%85%E3%81%8C%E7%99%BB%E5%A0%B4%E3%81%99%E3%82%8B%E6%98%A0%E7%94%BB/img_2.png"
width="640"
height="960"
srcset="http://kenji.blog/p/%E6%95%B0%E5%AD%A6%E8%80%85%E3%81%8C%E7%99%BB%E5%A0%B4%E3%81%99%E3%82%8B%E6%98%A0%E7%94%BB/img_2_hu18abd37eefb70a17a04950b9cdaa7d84_902746_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E6%95%B0%E5%AD%A6%E8%80%85%E3%81%8C%E7%99%BB%E5%A0%B4%E3%81%99%E3%82%8B%E6%98%A0%E7%94%BB/img_2_hu18abd37eefb70a17a04950b9cdaa7d84_902746_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="img_2.png"
class="gallery-image"
data-flex-grow="66"
data-flex-basis="160px"
>&lt;/p></description></item><item><title>[गणितीय सूत्रों से पूर्ण समझ] क्लासिकल में सबसे शक्तिशाली 'GNFS' क्वांटम एल्गोरिदम से क्यों हारता है? अभाज्य गुणनखंडन का पैराडाइम शिफ्ट</title><link>http://kenji.blog/hi/p/gnfs-to-shors-algorithm-math-deepdive/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://kenji.blog/hi/p/gnfs-to-shors-algorithm-math-deepdive/</guid><description>&lt;img src="http://kenji.blog/p/gnfs-to-shors-algorithm-math-deepdive/quantum_vs_gnfs_eyecatch_1788616101508.jpg" alt="Featured image of post [गणितीय सूत्रों से पूर्ण समझ] क्लासिकल में सबसे शक्तिशाली 'GNFS' क्वांटम एल्गोरिदम से क्यों हारता है? अभाज्य गुणनखंडन का पैराडाइम शिफ्ट" />&lt;p>आधुनिक इंटरनेट समाज में सूचना सुरक्षा, RSA क्रिप्टोग्राफी जैसी पब्लिक-की क्रिप्टोग्राफी प्रणालियों द्वारा सुरक्षित है। RSA क्रिप्टोग्राफी की सुरक्षा का आधार इस तथ्य पर निर्भर करता है कि &lt;strong>&amp;ldquo;विशाल भाज्य संख्याओं का अभाज्य गुणनखंडन (Prime Factorization) कम्प्यूटेशनल रूप से अत्यंत कठिन है&amp;rdquo;&lt;/strong> ।&lt;/p>
&lt;p>इस लेख में, हम क्लासिकल कंप्यूटरों के लिए सबसे शक्तिशाली अभाज्य गुणनखंडन एल्गोरिदम &lt;strong>&amp;ldquo;सामान्य संख्या क्षेत्र चलनी&amp;rdquo;&lt;/strong> (General Number Field Sieve, GNFS) के गणितीय तंत्र को खोलेंगे, और गणितीय सूत्रों तथा वैचारिक आरेखों (concept diagrams) का उपयोग करके गहराई से यह विश्लेषण करेंगे कि यह पीटर शोर द्वारा खोजे गए &lt;strong>&amp;ldquo;शोर के एल्गोरिदम&amp;rdquo;&lt;/strong> (Shor&amp;rsquo;s Algorithm) से पूरी तरह क्यों हार जाता है, और यह पैराडाइम शिफ्ट कैसे होता है।&lt;/p>
&lt;hr>
&lt;h2 id="1-कलसकल-कपयटग-म-अभजय-गणनखडन-क-दषटकण-फरमट-क-अभजय-गणनखडन-वध-स-वकस">1. क्लासिकल कंप्यूटिंग में अभाज्य गुणनखंडन का दृष्टिकोण: फर्मेट की अभाज्य गुणनखंडन विधि से विकास
&lt;/h2>&lt;p>अभाज्य गुणनखंडन समस्या का अर्थ है, दी गई एक भाज्य संख्या (composite number) $N$ के लिए अभाज्य संख्याओं $p, q$ को खोजना, जिससे $N = p \times q$ हो।&lt;/p>
&lt;p>मूल विचार निम्नलिखित सर्वांगसमता (congruence) को संतुष्ट करने वाले गैर-तुच्छ (non-trivial) $x, y$ खोजने पर आ जाता है:&lt;/p>
$$ x^2 \equiv y^2 \pmod N $$
&lt;p>इसे रूपांतरित करने पर,&lt;/p>
$$ x^2 - y^2 \equiv 0 \pmod N $$
$$ (x - y)(x + y) \equiv 0 \pmod N $$
&lt;p>यहाँ, यदि $x \not\equiv \pm y \pmod N$ हो, तो $\gcd(x-y, N)$ या $\gcd(x+y, N)$ की गणना करके, $N$ का एक गैर-तुच्छ गुणनखंड प्राप्त किया जा सकता है। यह तथ्य GNFS जैसे आधुनिक अभाज्य गुणनखंडन एल्गोरिदम का आधार है।&lt;/p>
&lt;hr>
&lt;h2 id="2-कलसकल-क-सबस-शकतशल-एलगरदम-समनय-सखय-कषतर-चलन-gnfs-क-गहरई">2. क्लासिकल का सबसे शक्तिशाली एल्गोरिदम: &amp;ldquo;सामान्य संख्या क्षेत्र चलनी&amp;rdquo; (GNFS) की गहराई
&lt;/h2>&lt;p>&lt;strong>&amp;ldquo;GNFS&amp;rdquo;&lt;/strong> आज ज्ञात क्लासिकल कंप्यूटरों के लिए सबसे तेज़ अभाज्य गुणनखंडन एल्गोरिदम है। इसकी समय जटिलता (time complexity) उप-घातांकीय (Sub-exponential) समय लेती है।&lt;/p>
&lt;h3 id="gnfs-क-समय-जटलत">GNFS की समय जटिलता
&lt;/h3>&lt;p>जब संख्या $N$ के अंकों की संख्या $b = \log_2 N$ हो, तो GNFS की जटिलता इस प्रकार व्यक्त की जाती है:&lt;/p>
$$ O\left( \exp \left( \left(\frac{64}{9} b\right)^{1/3} (\log b)^{2/3} \right) \right) $$
&lt;p>जैसा कि इस सूत्र से देखा जा सकता है, जटिलता बहुपद समय (polynomial time) नहीं है, बल्कि घातांकीय फ़ंक्शन (exponential function) से थोड़ी धीमी &lt;strong>&amp;ldquo;उप-घातांकीय समय&amp;rdquo;&lt;/strong> (sub-exponential time) है। फिर भी, यदि अंकों की संख्या बढ़ती है तो गणना का समय खगोलीय रूप से बढ़ जाता है।&lt;/p>
&lt;h3 id="gnfs-क-गणतय-ततर">GNFS का गणितीय तंत्र
&lt;/h3>&lt;p>GNFS मुख्य रूप से 4 चरणों से मिलकर बना है:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>बहुपद चयन (Polynomial Selection)&lt;/strong>&lt;/li>
&lt;li>&lt;strong>छानना (Sieving)&lt;/strong>&lt;/li>
&lt;li>&lt;strong>मैट्रिक्स न्यूनीकरण (Matrix Reduction)&lt;/strong>&lt;/li>
&lt;li>&lt;strong>वर्गमूल की गणना (Square Root)&lt;/strong>&lt;/li>
&lt;/ol>
&lt;h4 id="21-बहपद-चयन-और-बजय-सखय-कषतर-algebraic-number-field">2.1. बहुपद चयन और बीजीय संख्या क्षेत्र (Algebraic Number Field)
&lt;/h4>&lt;p>सबसे पहले, पूर्णांक गुणांकों (integer coefficients) वाले अलघुकरणीय बहुपदों (irreducible polynomials) $f(x)$ और $g(x)$ को चुना जाता है। इन्हें इस प्रकार सेट किया जाता है कि इनका modulo $N$ पर एक सामान्य मूल $m$ हो। अर्थात,&lt;/p>
$$ f(m) \equiv 0 \pmod N $$
$$ g(m) \equiv 0 \pmod N $$
&lt;p>आमतौर पर, $g(x)$ को रैखिक बहुपद $g(x) = x - m$ के रूप में चुना जाता है। यदि $f(x)$ के मूल को $\alpha$ मान लिया जाए, तो $\mathbb{Q}(\alpha)$ नामक &lt;strong>&amp;ldquo;संख्या क्षेत्र&amp;rdquo;&lt;/strong> (Number Field) बनता है। $\mathbb{Q}(\alpha)$ के वलय (ring) में संचालन और सामान्य पूर्णांक वलय $\mathbb{Z}$ के संचालन की तुलना होमोमोर्फिज़्म (homomorphism) $\phi: \alpha \mapsto m$ के माध्यम से की जाती है।&lt;/p>
&lt;h4 id="22-छनन-sieving">2.2. छानना (Sieving)
&lt;/h4>&lt;p>इसके बाद, सह-अभाज्य (coprime) पूर्णांकों के जोड़े $(a, b)$ की बड़ी संख्या में खोज की जाती है। इसका उद्देश्य ऐसे जोड़े खोजना है जहाँ निम्नलिखित 2 मान &lt;strong>&amp;ldquo;B-स्मूथ&amp;rdquo;&lt;/strong> (B-smooth, केवल अपेक्षाकृत छोटे अभाज्य गुणनखंडों से बने) हों:&lt;/p>
&lt;ol>
&lt;li>$a - bm$ (पूर्णांक वलय पर मान)&lt;/li>
&lt;li>$b^d f(a/b)$ (संख्या क्षेत्र पर मानदंड $N(a - b\alpha)$ के अनुरूप)&lt;/li>
&lt;/ol>
&lt;p>यहाँ &lt;strong>&amp;ldquo;चलनी&amp;rdquo;&lt;/strong> (Sieve) नामक एक तेज़ खोज तकनीक का उपयोग किया जाता है। इसके द्वारा, विशाल उम्मीदवारों में से शर्तों को पूरा करने वाले $(a, b)$ जोड़ों को कुशलतापूर्वक निकाला जाता है।&lt;/p>
&lt;h4 id="23-मटरकस-नयनकरण-linear-algebra-over-gf2">2.3. मैट्रिक्स न्यूनीकरण (Linear Algebra over GF(2))
&lt;/h4>&lt;p>एकत्र किए गए जोड़े $(a, b)$ से, घातांक सदिश (exponent vectors) का निर्माण किया जाता है, और एक विशाल विरल मैट्रिक्स (sparse matrix) के बाएँ शून्य स्थान (left null space) को $\mathbb{F}_2$ (वह क्षेत्र जिसमें केवल 0 और 1 तत्व होते हैं) पर ज्ञात किया जाता है।&lt;/p>
&lt;p>वेक्टर $v$ को एक समाधान के रूप में इस प्रकार खोजा जाता है कि संबंध $ \prod (a_i - b_i m) $ और $ \prod (a_i - b_i \alpha) $ दोनों वर्ग अवयव (square elements) बन जाएँ। यह,&lt;/p>
$$ M \mathbf{x} \equiv \mathbf{0} \pmod 2 $$
&lt;p>जैसी रैखिक समीकरण प्रणाली को हल करने के अलावा और कुछ नहीं है। यहाँ, ब्लॉक लैंक्ज़ोस एल्गोरिदम (Block Lanczos Algorithm) या ब्लॉक विडमैन एल्गोरिदम (Block Wiedemann Algorithm) जैसे उन्नत संख्यात्मक संगणना एल्गोरिदम का उपयोग किया जाता है।&lt;/p>
&lt;h4 id="24-वरगमल-क-गणन">2.4. वर्गमूल की गणना
&lt;/h4>&lt;p>अंत में, संख्या क्षेत्र और पूर्णांक वलय दोनों में वर्गमूल लिया जाता है, और $x^2 \equiv y^2 \pmod N$ संबंध प्राप्त किया जाता है। फिर, $\gcd(x-y, N)$ की गणना की जाती है और गुणनखंड प्राप्त किया जाता है।&lt;/p>
&lt;hr>
&lt;h2 id="3-कवटम-कपयटग-दवर-सफलत-शर-क-एलगरदम-shors-algorithm">3. क्वांटम कंप्यूटिंग द्वारा सफलता: &amp;ldquo;शोर का एल्गोरिदम&amp;rdquo; (Shor&amp;rsquo;s Algorithm)
&lt;/h2>&lt;p>जबकि GNFS को उप-घातांकीय समय की आवश्यकता होती है, 1994 में पीटर शोर द्वारा प्रस्तुत किया गया &lt;strong>&amp;ldquo;शोर का एल्गोरिदम&amp;rdquo;&lt;/strong> , क्वांटम कंप्यूटर का उपयोग करके इस समस्या को &lt;strong>&amp;ldquo;बहुपद समय&amp;rdquo;&lt;/strong> (Polynomial Time) में हल कर सकता है।&lt;/p>
&lt;h3 id="शर-क-एलगरदम-क-समय-जटलत">शोर के एल्गोरिदम की समय जटिलता
&lt;/h3>&lt;p>जब क्यूबिट्स की संख्या $O(\log N)$ हो, तो समय जटिलता इस प्रकार होती है:&lt;/p>
$$ O((\log N)^3) $$
&lt;p>इसका मतलब यह है कि यह बिट्स की संख्या के सापेक्ष घातांकीय विस्फोट नहीं करता है। यह एक आश्चर्यजनक परिणाम है कि &lt;strong>&amp;ldquo;क्वांटम कंप्यूटिंग&amp;rdquo;&lt;/strong> कुछ घंटों से कुछ दिनों में उन विशाल भाज्य संख्याओं को डिक्रिप्ट कर सकता है, जिनकी &lt;strong>&amp;ldquo;क्लासिकल कंप्यूटिंग&amp;rdquo;&lt;/strong> के लिए गणना का समय ब्रह्मांड के जीवनकाल से भी अधिक होगा।&lt;/p>
&lt;h3 id="शर-क-एलगरदम-क-समगर-दशय-आवरत-खज-समसय-period-finding-problem-म-कम">शोर के एल्गोरिदम का समग्र दृश्य: आवर्त खोज समस्या (Period Finding Problem) में कमी
&lt;/h3>&lt;p>शोर का एल्गोरिदम अभाज्य गुणनखंडन समस्या को बड़ी चतुराई से &lt;strong>&amp;ldquo;आवर्त खोज समस्या&amp;rdquo;&lt;/strong> में बदल देता है।&lt;/p>
&lt;ol>
&lt;li>$N$ के साथ सह-अभाज्य एक यादृच्छिक पूर्णांक $a$ चुनें ($1 &lt; a &lt; N$)।&lt;/li>
&lt;li>फलन $f(x) = a^x \bmod N$ परिभाषित करें।&lt;/li>
&lt;li>$f(x)$ का आवर्त (period) $r$ खोजें, अर्थात वह सबसे छोटा धनात्मक पूर्णांक $r$ जिसके लिए $a^r \equiv 1 \pmod N$ हो।&lt;/li>
&lt;li>यदि $r$ सम (even) है, तो जांचें कि क्या $a^{r/2} \not\equiv -1 \pmod N$ है, और अभाज्य गुणनखंड प्राप्त करने के लिए $\gcd(a^{r/2} \pm 1, N)$ की गणना करें।&lt;/li>
&lt;/ol>
&lt;p>चरण 3 में यह &lt;strong>&amp;ldquo;आवर्त $r$ की खोज&amp;rdquo;&lt;/strong> ही वह बाधा है जिसमें क्लासिकल कंप्यूटर को घातांकीय समय लगता है, लेकिन क्वांटम कंप्यूटर &lt;strong>&amp;ldquo;क्वांटम सुपरपोज़िशन&amp;rdquo;&lt;/strong> और &lt;strong>&amp;ldquo;क्वांटम फूरियर ट्रांसफॉर्म&amp;rdquo;&lt;/strong> (QFT) का उपयोग करके इसे पल भर में हल कर देता है।&lt;/p>
&lt;hr>
&lt;h2 id="4-कवटम-फरयर-टरसफरम-qft-और-आवरत-क-नषकरषण">4. क्वांटम फूरियर ट्रांसफॉर्म (QFT) और आवर्त का निष्कर्षण
&lt;/h2>&lt;p>आइए शोर के एल्गोरिदम के मूल, क्वांटम अवस्थाओं (quantum states) के संचालन को गणितीय सूत्रों के माध्यम से विस्तार से देखें।&lt;/p>
&lt;h3 id="41-कवटम-सपरपजशन-क-नरमण">4.1. क्वांटम सुपरपोज़िशन का निर्माण
&lt;/h3>&lt;p>सबसे पहले, 2 क्वांटम रजिस्टर तैयार किए जाते हैं। रजिस्टर 1 इनपुट $x$ की सुपरपोज़िशन अवस्था (superposition state) रखता है, और रजिस्टर 2 फलन के गणना परिणाम $f(x)$ को रखता है। प्रारंभिक अवस्था $|0\rangle |0\rangle$ पर हैडामर्ड ट्रांसफॉर्म (Hadamard Transform) लागू करके सभी संभावित $x$ का सुपरपोज़िशन बनाया जाता है।&lt;/p>
$$ |\psi_1\rangle = \frac{1}{\sqrt{Q}} \sum_{x=0}^{Q-1} |x\rangle |0\rangle $$
&lt;p>
(यहाँ $Q$, $N^2 \le Q &lt; 2N^2$ को पूरा करने वाली 2 की घात है)&lt;/p>
&lt;p>इसके बाद, क्वांटम ओरेकल $U_f$ का उपयोग करके $f(x) = a^x \bmod N$ की गणना की जाती है और इसे रजिस्टर 2 में संग्रहीत किया जाता है।&lt;/p>
$$ |\psi_2\rangle = U_f |\psi_1\rangle = \frac{1}{\sqrt{Q}} \sum_{x=0}^{Q-1} |x\rangle |a^x \bmod N\rangle $$
&lt;p>यहाँ मान लीजिए कि रजिस्टर 2 को मापा गया है (वास्तव में इसे मापे बिना भी गणितीय संरचना समान रहती है)। यदि कोई मान $y = a^{x_0} \bmod N$ देखा जाता है, तो रजिस्टर 1 की अवस्था उन सभी $x$ के सुपरपोज़िशन में सिमट (collapse) जाती है जिनके लिए $f(x) = y$ होता है। यदि आवर्त $r$ है, तो ऐसे $x$, $x_0, x_0 + r, x_0 + 2r, \dots$ होंगे।&lt;/p>
$$ |\psi_3\rangle = \frac{1}{\sqrt{M}} \sum_{k=0}^{M-1} |x_0 + kr\rangle $$
&lt;p>
(यहाँ $M \approx Q/r$ पदों की संख्या है)&lt;/p>
&lt;p>यह अवस्था आवर्त $r$ की जानकारी को अंतर्निहित रखती है, लेकिन इसे सीधे मापने पर केवल एक यादृच्छिक (random) $x_0 + kr$ प्राप्त होगा, और आवर्त $r$ ज्ञात नहीं होगा। यहीं पर QFT काम आता है।&lt;/p>
&lt;h3 id="42-कवटम-फरयर-टरसफरम-quantum-fourier-transform-लग-करन">4.2. क्वांटम फूरियर ट्रांसफॉर्म (Quantum Fourier Transform) लागू करना
&lt;/h3>&lt;p>QFT एक ऐसा ऑपरेशन है जो क्वांटम अवस्थाओं के आयामों (amplitudes) पर असतत फूरियर ट्रांसफॉर्म (Discrete Fourier Transform) करता है। अवस्था $|x\rangle$ पर QFT की क्रिया को इस प्रकार परिभाषित किया गया है:&lt;/p>
$$ \text{QFT} |x\rangle = \frac{1}{\sqrt{Q}} \sum_{y=0}^{Q-1} e^{2\pi i \frac{xy}{Q}} |y\rangle $$
&lt;p>जब इसे $|\psi_3\rangle$ पर लागू किया जाता है, तो चरण हस्तक्षेप (क्वांटम इंटरफेरेंस) होता है।&lt;/p>
$$ |\psi_4\rangle = \text{QFT} |\psi_3\rangle = \frac{1}{\sqrt{MQ}} \sum_{y=0}^{Q-1} \sum_{k=0}^{M-1} e^{2\pi i \frac{(x_0 + kr)y}{Q}} |y\rangle $$
&lt;p>इस समीकरण के योग का विस्तार करने पर,&lt;/p>
$$ \sum_{k=0}^{M-1} e^{2\pi i \frac{kry}{Q}} $$
&lt;p>यह भाग प्रकट होता है। इस ज्यामितीय श्रेणी का योग केवल तभी एक-दूसरे को मजबूत करता है (Constructive Interference) जब $ry/Q$ एक पूर्णांक के करीब होता है, और अन्य समय में यह एक-दूसरे को रद्द (Destructive Interference) कर देता है।&lt;/p>
&lt;p>इसलिए, उच्च संभावना के साथ मापी जाने वाली अवस्था $|y\rangle$ वह होगी जिसके लिए,&lt;/p>
$$ \frac{y}{Q} \approx \frac{c}{r} $$
&lt;p>शर्त को पूरा करने वाला पूर्णांक $y$ हो ($c$ कोई पूर्णांक है)।&lt;/p>
&lt;h3 id="43-नरतर-भनन-वसतर-continued-fraction-expansion-दवर-आवरत-क-पहचन">4.3. निरंतर भिन्न विस्तार (Continued Fraction Expansion) द्वारा आवर्त की पहचान
&lt;/h3>&lt;p>माप से $y$ प्राप्त करने के बाद, क्लासिकल कंप्यूटर का उपयोग करके $y/Q$ का &lt;strong>&amp;ldquo;निरंतर भिन्न विस्तार&amp;rdquo;&lt;/strong> (Continued Fraction Expansion) किया जाता है। इसके द्वारा, $y/Q$ के अनुमानित भिन्न $c/r$ की गणना की जाती है, और हर (denominator) से आवर्त $r$ के उम्मीदवार को अत्यधिक कुशलता से निकाला जा सकता है।&lt;/p>
&lt;hr>
&lt;h2 id="5-वचरक-मडल-क-तलन-और-परडइम-शफट">5. वैचारिक मॉडल की तुलना और पैराडाइम शिफ्ट
&lt;/h2>&lt;p>GNFS और शोर के एल्गोरिदम के बीच के अंतर को सहज रूप से समझने के लिए, Mermaid सिंटैक्स का उपयोग करके एक वैचारिक आरेख (concept diagram) नीचे दिया गया है।&lt;/p>
&lt;h3 id="कवटम-सरकट-दवर-शर-क-एलगरदम-क-वचरक-आरख">क्वांटम सर्किट द्वारा शोर के एल्गोरिदम का वैचारिक आरेख
&lt;/h3>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">graph TD
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> A[प्रारंभिक अवस्था: 0...0] --&amp;gt; B[Hadamard ट्रांसफॉर्म द्वारा सभी अवस्थाओं का सुपरपोज़िशन]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> B --&amp;gt; C[मॉड्यूलर घातांक गणना a^x mod N]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> C --&amp;gt;|क्वांटम एंटैंगलमेंट| D[आवधिकता (periodicity) वाली अवस्था में सिमटना]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> D --&amp;gt; E[क्वांटम फूरियर ट्रांसफॉर्म QFT]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> E --&amp;gt;|हस्तक्षेप (Interference) द्वारा प्रायिकता प्रवर्धन| F[माप: y प्राप्त करना]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> F --&amp;gt; G[क्लासिकल प्रक्रिया: निरंतर भिन्न विस्तार]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> G --&amp;gt; H[आवर्त r की खोज]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> H --&amp;gt; I[N के अभाज्य गुणनखंडों की गणना]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> style A fill:#f9f,stroke:#333,stroke-width:2px
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> style E fill:#bbf,stroke:#333,stroke-width:2px
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> style I fill:#bfb,stroke:#333,stroke-width:2px
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="परडइम-शफट-क-सर">पैराडाइम शिफ्ट का सार
&lt;/h3>&lt;p>GNFS &lt;strong>&amp;ldquo;गणितीय स्थान (संख्या क्षेत्र) में संबंधों को खोजने&amp;rdquo;&lt;/strong> का दृष्टिकोण अपनाता है। हालाँकि, चूँकि खोज स्थान अंकों की संख्या के सापेक्ष घातांकीय रूप से फैलता है, इसलिए क्लासिकल कंप्यूटर की गणना क्षमता (समानांतरकरण सहित) के साथ, जब कुंजी की लंबाई 2048 बिट्स आदि से अधिक हो जाती है तो इसे डिक्रिप्ट करना लगभग असंभव हो जाता है।&lt;/p>
&lt;p>दूसरी ओर, शोर का एल्गोरिदम &lt;strong>&amp;ldquo;क्वांटम हस्तक्षेप के कारण तरंग गुणों&amp;rdquo;&lt;/strong> का उपयोग करता है। यह सुपरपोज़िशन अवस्था में सभी गणना पथों (computation paths) का एक साथ मूल्यांकन करता है, और QFT द्वारा अवांछित उत्तरों को रद्द (Destructive Interference) कर देता है, तथा केवल सही उत्तर वाले आवर्त के प्रायिकता आयाम (probability amplitude) को प्रवर्धित (Constructive Interference) करता है। इससे यह स्थान को खोजने के बजाय, &lt;strong>&amp;ldquo;सही उत्तर को ही सामने लाने&amp;rdquo;&lt;/strong> के एक बिल्कुल अलग आयाम का दृष्टिकोण प्राप्त करता है।&lt;/p>
&lt;h2 id="6-नषकरष">6. निष्कर्ष
&lt;/h2>&lt;p>इस लेख में, हमने क्लासिकल सीमाओं की चरम सीमा &lt;strong>&amp;ldquo;GNFS&amp;rdquo;&lt;/strong> और क्वांटम कंप्यूटिंग की शक्ति प्रदर्शित करने वाले &lt;strong>&amp;ldquo;शोर के एल्गोरिदम&amp;rdquo;&lt;/strong> के गणितीय पृष्ठभूमि और एल्गोरिथम संरचना की गहराई से तुलना की है।&lt;/p>
&lt;p>जबकि GNFS ने बहुपद चयन और विशाल मैट्रिक्स गणना जैसी गणितीय तकनीकों का उपयोग करके समय जटिलता को उप-घातांकीय समय तक कम किया, शोर के एल्गोरिदम ने क्वांटम यांत्रिकी के मूल सिद्धांतों, सुपरपोज़िशन और हस्तक्षेप को गणितीय उपकरण (QFT) के साथ मिलाया, और एक ही झटके में बहुपद समय की सफलता प्राप्त की।&lt;/p>
&lt;p>वर्तमान में, व्यावहारिक पैमाने (हजारों क्यूबिट्स) पर शोर के एल्गोरिदम को चलाने में सक्षम कोई दोष-सहिष्णु क्वांटम कंप्यूटर (Fault-Tolerant Quantum Computer, FTQC) मौजूद नहीं है। हालाँकि, इस गणितीय और सैद्धांतिक पैराडाइम शिफ्ट का अस्तित्व ही वह सबसे बड़ा कारण है कि वर्तमान में दुनिया भर में पोस्ट-क्वांटम क्रिप्टोग्राफी (PQC) की ओर संक्रमण में तेज़ी आ रही है।&lt;/p></description></item></channel></rss>