मॉड्यूलो कैलकुलेटर
नतीजा
सर्वांगसमता
- शेषफल
- 3
किसी पूर्ण संख्या का दूसरी के सापेक्ष मॉड्यूलो वह सबसे छोटा ऋणात्मक-रहित शेषफल है जो पहली को दूसरी से बाँटने पर बचता है, और यह पेज उसे सर्वांगसमता की तरह लिखता है: -47 ≡ 3 (mod 5)। शेषफल हमेशा कम से कम शून्य और मापांक के आकार से छोटा रहता है, चाहे दोनों संख्याओं के चिह्न कुछ भी हों। यही एक नियम मॉड्यूलर अंकगणित को ऋणात्मक संख्या के साथ काम करने लायक़ बनाता है। किसी प्रोग्रामिंग भाषा से -47 % 5 पूछिए तो उत्तर भाषा पर निर्भर करता है: JavaScript, C, Java और Go सब -2 लौटाते हैं, जबकि Python 3 लौटाता है। इनमें गणित का शेषफल सिर्फ़ एक है, और वही है जो कभी ऋणात्मक नहीं निकलता। यह पेज ऋण एक अरब से एक अरब के बीच की दो पूर्ण संख्याएँ लेता है, और शेषफल तथा वह समीकरण दोनों छापता है जो भाज्य, शेषफल और मापांक को आपस में जोड़ता है। इनपुट से और कुछ नहीं माँगा जाता: भाज्य ऋणात्मक संख्या हो सकती है, मापांक ऋणात्मक हो सकता है, और भाज्य मापांक से छोटा भी हो सकता है। सिर्फ़ एक मान अस्वीकार किया जाता है — शून्य मापांक, क्योंकि शून्य से कोई संख्या विभाज्य नहीं होती और इसलिए mod 0 के पास देने के लिए कोई उत्तर नहीं है।
चारों चिह्न-संयोजन, और हर एक से बनने वाली सर्वांगसमता
| भाज्य | मापांक | शेषफल | सर्वांगसमता |
|---|---|---|---|
| -47 | 5 | 3 | -47 ≡ 3 (mod 5) |
| -1 | 2 | 1 | -1 ≡ 1 (mod 2) |
| 47 | 5 | 2 | 47 ≡ 2 (mod 5) |
| 47 | -5 | 2 | 47 ≡ 2 (mod -5) |
पहली और तीसरी पंक्ति साथ पढ़िए: एक में भाज्य -47 है और दूसरी में 47, मापांक दोनों में 5 है, और शेषफल 3 तथा 2 हैं। यही जोड़ी पूरे पेज की बात है। ज़्यादातर कैलकुलेटर और प्रोग्रामिंग भाषाएँ जिस नियम पर चलती हैं उसमें पहली पंक्ति -2 पढ़ती, और यहाँ 3 पढ़ना ही आम शेष और मॉड्यूलो के शेषफल का अंतर है। अब पहली और दूसरी पंक्ति पढ़िए: भाज्य ऋणात्मक ही रहता है जबकि मापांक 5 से आधा करके 2 किया जाता है, और शेषफल 3 से 1 हो जाता है — मापांक आधा करने से शेषफल आधा नहीं होता, वह उसी संख्या को छोटे चक्र पर दोबारा नापता है। चौथी पंक्ति में मापांक -5 है और उत्तर 2 आता है, ठीक वैसे ही जैसे 5 मापांक वाली तीसरी पंक्ति में, और यही चिह्न-निरपेक्षता एक ही तुलना में दिख जाती है। किसी भी पंक्ति को जाँचिए — भाज्य में से शेषफल घटाइए: नतीजा हमेशा मापांक का कोई पूरा गुणज आता है, और सर्वांगसमता यही दावा करती है।
फ़ॉर्मूला
-47 ÷ 5 = -9 शेषफल -2 (ट्रंकेटेड); -2 + 5 = 3, इसलिए -47 mod 5 = 3 और -47 ≡ 3 (mod 5)
- a
- भाज्य, यानी वह संख्या जिसे घटाया जा रहा है। यह ऋणात्मक संख्या हो सकती है, और यही वह मामला है जिसे जाँचना चाहिए: a mod n का मान ऋणात्मक-रहित ही आना चाहिए, भले ही a न हो, इसलिए -47 को -2 पर नहीं बल्कि 3 पर पड़ना है। -1000000000 से 1000000000 तक की पूर्ण संख्याएँ स्वीकार की जाती हैं, और 0 भी बिल्कुल वैध भाज्य है जिसका शेषफल हमेशा 0 आता है
- n
- मापांक, यानी वह संख्या जिससे बाँटा जा रहा है। यह भी ऋणात्मक हो सकती है और तब शेषफल नहीं बदलता: 47 mod -5 और 47 mod 5 दोनों 2 होते हैं, क्योंकि यह कथन कि n, a - r को बाँटता है और यह कथन कि -n, a - r को बाँटता है, एक ही बात कहने के दो तरीक़े हैं। शून्य ही एक ऐसा मान है जो अस्वीकार होता है, और पेज n को ठीक वैसे ही छापता है जैसे आपने डाला था, उसके आकार से बदलकर नहीं
- r
- शेषफल, यानी उत्तर। यह वह सबसे छोटी ऋणात्मक-रहित संख्या है जिसे a से घटाने पर n का गुणज बचे। दो शर्तें इसे पूरी तरह तय कर देती हैं: r कम से कम 0 है, और r मापांक के आकार से छोटा है। -47 mod 5 में 3 आता है क्योंकि 3 वह सबसे छोटी ऋणात्मक-रहित संख्या है जिसके लिए -47 - 3 = -50, 5 का गुणज है
- ((a mod n) + |n|) mod |n|
- वह दो चरणों वाला नुस्ख़ा जो यह पेज अपनाता है, और दूसरा चरण क्यों है। पहला चरण वही है जो ज़्यादातर भाषाएँ निकालती हैं और वह ऋणात्मक उत्तर दे सकता है; दूसरा चरण मापांक का आकार जोड़कर दोबारा शेष निकालता है, जिससे नतीजा ऋणात्मक-रहित अंतराल में चला जाता है और यह नहीं बदलता कि वह n के किस गुणज से नापा जा रहा है। n के बजाय n का आकार लेने की वजह यही है कि ऋणात्मक मापांक भी बिना बदले गुज़र जाए
- a ≡ r (mod n)
- सर्वांगसमता, जो नतीजे के पैनल की पहली पंक्ति है। यह कहती है कि n, a - r को पूरा-पूरा बाँटता है, और यह उसी बात का दूसरा रूप है जो अकेला शेषफल कहता है — बस यहाँ मापांक और भाज्य भी साथ नामित हैं। त्रिबल चिह्न और mod शब्द संकेतन हैं, शब्द नहीं, इसलिए साइट की हर भाषा में ये एक जैसे छपते हैं, और संख्याओं में हज़ार का कोई विभाजक नहीं डाला जाता
- -47 ≡ 3 (mod 5)
- डिफ़ॉल्ट इनपुट पूरा लिखा हुआ। यही वह मामला है जो इस पेज को शेषफल कैलकुलेटर से अलग करता है: वही दो संख्याएँ चार-क्रिया वाले कैलकुलेटर के ट्रंकेटेड नियम में -9 शेषफल -2 देती हैं, और यहाँ -47 ≡ 3 (mod 5) देती हैं। -47 की जगह 47 डालिए तो 3 के बजाय 2 आता है, यानी एक अकेला ऋण चिह्न उत्तर को चक्र पर पूरा एक क़दम खिसका देता है
इस पेज पर तब आइए जब उत्तर को रुकना नहीं बल्कि लपेट खाकर लौटना हो। घड़ी का अंकगणित सबसे पुराना उदाहरण है: 10 बजे में 5 घंटे जोड़िए तो 3 बजते हैं, यानी 15 mod 12, और शेषफल का कभी ऋणात्मक न निकलना ही वह बात है जिससे घड़ी का चेहरा पढ़ने लायक़ बना रहता है। कैलेंडर का काम भी इसी ढाँचे का है — साल का सौवाँ दिन, या किसी तारीख़ का सप्ताह का दिन, 7 पर लिया गया शेषफल है। प्रोग्रामिंग में मॉड्यूलो से यह जाँचा जाता है कि एक संख्या दूसरी को बाँटती है या नहीं (a mod n तब 0 होता है जब n पूरा-पूरा समा जाए), गोलाकार बफ़र या हैश तालिका में किसी सूचक को सीमा के भीतर वापस लाने के लिए, किसी लूप वाले गिनती-यंत्र को तय सीमा में रखने के लिए, और किसी सूची से बारी-बारी कोई चीज़ चुनने के लिए। क्रिप्टोग्राफ़ी इसी पर खड़ी है: RSA और Diffie-Hellman बहुत बड़ी संख्याओं का मॉड्यूलर अंकगणित हैं, और शेषफल को ऋणात्मक-रहित परिभाषित करने की असली वजह यही है कि चिह्न वाला उत्तर ऊपर और अंकगणित बनाने के लिए अस्पष्ट रहता। जाँच-अंक, चाहे बैंक खाता संख्या के हों या ISBN के, 9, 10 या 11 पर लिए गए शेषफल होते हैं। और जब सवाल यह हो कि मेरे कैलकुलेटर के नियम में यह कितनी बार जाता है और क्या बचता है, तो शेषफल कैलकुलेटर बेहतर पेज है क्योंकि वह दोनों नियम साथ-साथ रखता है; और जब सवाल यह हो कि दोनों संख्याओं में क्या साझा है, तो महत्तम समापवर्तक वाला पेज सीधा उत्तर देता है।
हल किए हुए उदाहरण
चिह्न का जाल: -47 mod 5
- आम तरीक़े से बाँटिए और भिन्न हटा दीजिए: -47 ÷ 5 = -9.4, इसलिए ट्रंकेट करने वाला भागफल -9 है
- -9 × 5 = -45, और -47 - (-45) = -2, इसलिए ट्रंकेटेड शेषफल -2 है
- शेषफल को कम से कम 0 होना है, इसलिए मापांक का आकार जोड़िए: -2 + 5 = 3
- जाँचिए कि नतीजा दायरे में है: 0 ≤ 3 < 5, इसलिए और कोई सुधार नहीं चाहिए
- सर्वांगसमता पढ़िए: -47 ≡ 3 (mod 5), यानी 5, -47 - 3 = -50 को पूरा-पूरा बाँटता है
डिफ़ॉल्ट इनपुट, और वही जो बताता है कि यह पेज क्यों मौजूद है। चार-क्रिया वाला कैलकुलेटर और ज़्यादातर प्रोग्रामिंग भाषाएँ इस भाग पर -9 शेषफल -2 बताएँगी; वह उत्तर ग़लत नहीं है, वह अलग ढंग से पूछे गए सवाल का जवाब है। यहाँ शेषफल 3 है क्योंकि 3 वह सबसे छोटी ऋणात्मक-रहित संख्या है जिसके बाद 5 का गुणज बचता है। ध्यान दीजिए कि 47 mod 5 = 2 होता है, -3 या 3 नहीं — भाज्य को चक्र पर एक पूरा क़दम खिसकाने से शेषफल भी एक क़दम खिसकता है, और दोनों शेषफलों का अंतर 5 नहीं बल्कि ठीक 1 है।
ऋणात्मक मापांक: 47 mod -5
- 47 ÷ 5 = 9.4, इसलिए 5 नौ बार जाता है और 9 × 5 = 45
- 47 - 45 = 2, जो पहले से ही 0 ≤ 2 < 5 के बीच है
- मापांक ऋणात्मक है, पर विभाज्यता को चिह्न से मतलब नहीं: -5, 45 को पूरा-पूरा बाँटता है, इसलिए 47 - 2 को भी बाँटेगा
- सर्वांगसमता मापांक को वैसे ही लिखती है जैसे वह डाला गया था: 47 ≡ 2 (mod -5)
यह मामला दिखाता है कि शेषफल मापांक के चिह्न पर निर्भर नहीं करता। -5 की जगह 5 लिखने से उत्तर में कुछ नहीं बदलता, क्योंकि -5 किसी संख्या को ठीक तभी बाँटता है जब 5 बाँटता हो। पेज छपी हुई सर्वांगसमता में ऋण चिह्न बनाए रखता है, चुपचाप हटा नहीं देता; -5 को 5 लिख देना ऐसा लगता जैसे आपका इनपुट ही फेंक दिया गया हो। संदर्भ तालिका की उन दो पंक्तियों से मिलाइए जिनका भाजक -5 है और उनसे जिनका 5 है: शेषफल को सिर्फ़ भाज्य का चिह्न हिलाता है।
साधारण मामला: 1234 mod 12
- 12 × 100 = 1200, और 1234 - 1200 = 34, इसलिए आगे बढ़िए: 12 × 2 = 24 लेने पर 34 - 24 = 10 बचता है
- 12 × 3 = 36 लेने पर 34 से आगे निकल जाएँगे, इसलिए भागफल 102 है और बचा हिस्सा 10
- 10 कम से कम 0 है और 12 से छोटा, इसलिए वह पहले से ही शेषफल है
- इसे सर्वांगसमता की तरह पढ़िए: 1234 ≡ 10 (mod 12)
दोनों संख्याएँ धनात्मक होने का सीधा मामला, जहाँ शेषफल और आम शेष एक ही बात कहते हैं — और यही इसे शामिल करने की वजह है। जब दोनों संख्याएँ धनात्मक हों तो मिलाने जैसा कुछ नहीं होता और यह पेज वही काम कर रहा होता है जो कोई भी शेषफल वाला औज़ार करता है। दिलचस्प पंक्तियाँ वे हैं जिनमें ऋण चिह्न है। इसी जोड़ी की एक दूसरी पढ़त भी ध्यान देने लायक़ है: 1234 mod 12 से यह पूछा जाता है कि बारह घंटे के चेहरे वाली घड़ी पर कोई अवधि किस घंटे पर पड़ेगी, और 10 एक बिल्कुल ठीक घंटा है जबकि -2 न होता।
सीमाएँ
मापांक शून्य नहीं हो सकता। शून्य से भाग का कोई उत्तर नहीं होता, इसलिए बताने के लिए न कोई शेषफल बचता है और न कोई सबसे छोटा ऋणात्मक-रहित शेषफल; पेज ऐसा कोई प्लेसहोल्डर लौटाने के बजाय, जो नतीजा जैसा दिखे, इनपुट अस्वीकार कर देता है। दोनों संख्याएँ पूर्ण होनी चाहिए। दशमलव मापांक की अपनी परिभाषा गणित की कुछ शाखाओं में है, पर वह इस पेज में लागू नहीं होती, इसलिए 47.5 को चुपचाप 48 बनाकर उत्तर देने के बजाय अस्वीकार किया जाता है। हर संख्या का परिमाण एक अरब तक सीमित है, जिससे हर बीच का मान उस दायरे में रहता है जहाँ दोहरी परिशुद्धता वाली संख्या पूर्णांकों को अभी ठीक-ठीक दर्शाती है; उसके आगे अंकगणित पूर्णांकन करने लगेगा और उत्तर बिल्कुल आम दिखते हुए भी ग़लत होगा। पेज सिर्फ़ शेषफल और सर्वांगसमता बताता है, और कुछ नहीं: यह भागफल नहीं देता, आपके भाज्य के साथ सर्वांगसम बाक़ी संख्याएँ नहीं गिनाता, और एक बार में एक से ज़्यादा जोड़ी पर मॉड्यूलर अंकगणित नहीं करता। ऋणात्मक मापांक स्वीकार किया जाता है और जैसा डाला गया वैसा ही छपता है, जिसका मतलब है कि एक ही बात कहने वाली दो सर्वांगसमताएँ पेज पर अलग दिख सकती हैं — 47 ≡ 2 (mod -5) और 47 ≡ 2 (mod 5) एक ही कथन हैं। और नीचे की संदर्भ तालिका चार तय जोड़ियाँ दिखाती है, आपके इनपुट का पीछा नहीं करती; जो आपने डाला उसका उत्तर नतीजे का पैनल देता है।
अक्सर पूछे जाने वाले सवाल
- -47 mod 5 का उत्तर 3 क्यों है, -2 क्यों नहीं?
- क्योंकि शेषफल को वह सबसे छोटी ऋणात्मक-रहित संख्या परिभाषित किया गया है जिसे भाज्य में से घटाने पर मापांक का गुणज बचे। -2 और 3 दोनों इस मायने में चल जाते हैं कि -47 - (-2) = -45 और -47 - 3 = -50, दोनों 5 के गुणज हैं, इसलिए अंकगणित अकेला इनमें से किसी एक को नहीं चुनता। परिभाषा चुनती है: शेषफल 0 से लेकर मापांक से ठीक पहले तक के अंतराल में रहता है, और -2 उससे बाहर है। बाक़ी सब इसी से निकलता है। प्रोग्रामिंग भाषा से जो मिलता है वह इस पर निर्भर है कि उसने कौन-सा नियम चुना, और JavaScript, C, Java तथा Go ने दूसरा चुना — वे चिह्न को भाज्य के पीछे चलने देते हैं। Python ने यह वाला चुना। कोई भाषा ख़राब नहीं है; वे अलग ढंग से पूछे गए सवालों का जवाब देती हैं।
- क्या मापांक ऋणात्मक हो सकता है?
- हाँ, और उसके चिह्न से शेषफल पर कोई असर नहीं पड़ता। ऋणात्मक मापांक काम करता है क्योंकि विभाज्यता चिह्न नहीं देखती: -5 किसी संख्या को ठीक तभी बाँटता है जब 5 बाँटता हो, इसलिए -5 के गुणजों का समूह 5 के गुणजों के समूह जितना ही है, और उसमें सबसे छोटी ऋणात्मक-रहित संख्या दोनों हालत में एक ही है। पेज मापांक को ठीक वैसे ही छापता है जैसे वह डाला गया था, -5 को 5 से बदलकर नहीं, क्योंकि लिखे हुए को बदल देना ऐसा लगता जैसे चिह्न गिर गया हो। इसलिए 47 mod -5 भी 2 है और 47 mod 5 भी 2, और दोनों छपी सर्वांगसमताओं में फ़र्क़ सिर्फ़ इतना है कि एक में ऋण चिह्न दिखता है।
- मापांक में 0 डालें तो क्या होता है?
- पेज उसे अस्वीकार कर देता है। mod 0 के पास देने के लिए कोई मान नहीं है: शून्य सिर्फ़ शून्य को बाँटता है, इसलिए भाज्य को नापने के लिए 0 का कोई पूरा गुणज नहीं है और लेने के लिए कोई शेषफल नहीं। 0 लौटाना, या भाज्य ही लौटा देना, उत्तर जैसा दिखता और हर इनपुट के लिए ग़लत होता। इनपुट अस्वीकार करना ही ईमानदार नतीजा है। शून्य से भाग बाक़ी पूरे अंकगणित में भी इसी वजह से अपरिभाषित है।
- क्या यह इस साइट के शेषफल कैलकुलेटर जैसा ही है?
- नहीं, और दोनों एक ही सवाल पर अलग-अलग उत्तर देते हैं, जो फ़र्क़ देखने का सबसे साफ़ तरीक़ा है। शेषफल वाला पेज दो नियम साथ-साथ रखता है और चुनने देता है, क्योंकि दीर्घ भाग में सचमुच दोनों नियम चलन में हैं और किसी कक्षा में कोई भी पढ़ाया जा सकता है। यह पेज कोई विकल्प नहीं देता, क्योंकि मॉड्यूलो की एक ही पढ़त है: उत्तर कभी ऋणात्मक नहीं होता। -47 बटा 5 पर शेषफल वाला पेज अपने डिफ़ॉल्ट नियम में -9 शेषफल -2 दिखाएगा, जबकि यह पेज सर्वांगसमता -47 ≡ 3 (mod 5) दिखाता है। दोनों नियमों का फ़र्क़ किसी तय जोड़ी पर देखने के लिए वह पेज लीजिए; और जब शेषफल ख़ुद चाहिए हो तो यह पेज।
- शेषफल का असली इस्तेमाल कहाँ होता है?
- हर वहाँ जहाँ कोई गिनती बढ़ती रहने के बजाय लपेट खाकर लौटनी हो। घड़ी का चेहरा रोज़मर्रा का उदाहरण है: बारह घंटे के डायल पर 10 बजे में 5 घंटे जोड़ने पर 15 mod 12 आता है, यानी 3 बजे। सप्ताह के दिन भी इसी तरह 7 पर चलते हैं। प्रोग्रामिंग में मॉड्यूलो से विभाज्यता जाँची जाती है क्योंकि a mod n ठीक तभी 0 होता है जब n बराबर बाँट दे; यह गोलाकार बफ़र या हैश तालिका में किसी सूचक को सीमा के भीतर वापस लाता है, जहाँ अंत से आगे बढ़ चुका सूचक शुरू पर लौटना ही है; और किसी लूप वाले गिनती-यंत्र को तय सीमा के भीतर रखता है। सार्वजनिक कुंजी वाली क्रिप्टोग्राफ़ी बहुत बड़ी संख्याओं का मॉड्यूलर अंकगणित है, और इसीलिए ऋणात्मक-रहित नियम मायने रखता है — चिह्न वाले नतीजे देने वाले अंकगणित पर आगे कुछ बनाना अस्पष्ट रहता।
- यहाँ भागफल क्यों नहीं दिखाया जाता?
- क्योंकि भागफल शेषफल की बात का हिस्सा नहीं है। सर्वांगसमता भाज्य, शेषफल और मापांक के नाम लेती है, और उसका दावा यह है कि मापांक पहले दो के अंतर को बाँटता है। यह कथन भागफल के बिना पूरा है, क्योंकि भागफल वह संख्या है जो यह पूछने पर मिलती है कि मापांक कितनी पूरी बार समाता है, और वह सवाल दीर्घ भाग का है। अगर भागफल भी साथ चाहिए तो शेषफल कैलकुलेटर और दीर्घ भाग कैलकुलेटर दोनों उसे बताते हैं। अकेला शेषफल भी नतीजे के पैनल की दूसरी पंक्ति पर छपता है, जिससे सिर्फ़ संख्या चाहने वाले पाठक को उसे वाक्य में से निकालना न पड़े।
संदर्भ
- Modular Arithmetic — the arithmetic of remainders, including the convention that the residue is taken in the interval from 0 up to the modulus — Wolfram MathWorld (United States)
- Congruence — the notation a ≡ r (mod n) and what it means for one number to divide the difference of two others exactly — Wolfram MathWorld (United States)
- Remainder (%) — the JavaScript operator whose sign follows the dividend, the behaviour that makes -47 % 5 return -2 and the reason a second step is needed here — MDN Web Docs (Mozilla)