गणित कैलकुलेटर
माड्यूलो गणक


माड्यूलो गणक

माड्यूलो गणक (Modulo Calculator) से दो संख्याओं के विभाजन का शेषफल (Remainder) तुरंत ज्ञात करें। धनात्मक/ऋणात्मक संख्याओं के लिए तेज़ और सटीक टूल।

मोड्यूलो

1

आपकी गणना में त्रुटि थी।

विषय सूची

  1. मॉड्यूलो कैलकुलेटर के बिना गणना
    1. उदाहरण
  2. मॉड्यूलो थ्योरी और क्लॉक का उदाहरण
    1. उदाहरण
  3. मॉड्यूलो के उपयोग (Applications of Modulo)
    1. सम और विषम संख्याओं की पहचान
    2. इकाई रूपांतरण (Unit Conversion)
    3. लीप वर्ष (Leap Year) का निर्धारण
  4. रैंडम नंबर जनरेटर (Random Number Generator)
    1. क्रिप्टोग्राफी (Cryptography)
  5. निष्कर्ष (Conclusion)

माड्यूलो गणक

मॉड्यूलो ऑपरेशन (Modulo Operation) किसी विभाजन (division) के बाद शेषफल (remainder) ज्ञात करने की एक गणितीय विधि है। मॉड्यूलो की खासियत यह है कि यह शेषफल को एक पूर्ण संख्या (whole number) के रूप में लौटाता है।

मान लीजिए आपके तीन बच्चे हैं। आप कैंडीज का एक बॉक्स खरीदते हैं जिसमें 20 कैंडीज हैं। आप सभी कैंडीज को अपने बच्चों के बीच समान और निष्पक्ष रूप से बांटना चाहते हैं, वह भी किसी कैंडी को काटे या तोड़े बिना। ऐसी स्थिति में, आप पहले विभाजन के बाद बचे हुए शेष (remainder) को निकाल सकते हैं और बची हुई कैंडीज खुद खा सकते हैं।

यही वह स्थिति है जहाँ आप मॉड्यूलो ऑपरेटर (Modulo Operator) का उपयोग कर सकते हैं। इसे % चिह्न या mod के रूप में भी दर्शाया जाता है। छोटी संख्याओं के लिए तो आप आसानी से अपने दिमाग में गणना कर सकते हैं, लेकिन यदि आप बड़ी संख्याओं के साथ काम कर रहे हैं, तो मॉड्यूलो कैलकुलेटर (Modulo Calculator) का उपयोग करना अधिक आसान और सुविधाजनक होगा।

समीकरण को इस प्रकार दर्शाया जा सकता है:

Dividend = (Quotient × Divisor) + Remainder

हमारे उदाहरण में:

  • भाज्य (Dividend) 20 है (कैंडीज की कुल संख्या);
  • भाजक (Divisor) 3 है (बच्चों की संख्या);
  • भागफल (Quotient) 6 है (प्रत्येक बच्चे को मिलने वाली कैंडीज);
  • शेषफल (Remainder) 2 है (बची हुई कैंडीज जो आप खुद रख सकते हैं)।

यदि आप मॉड्यूलो ऑपरेशन का उपयोग करते हैं, तो आप इसे निम्न रूप में लिख सकते हैं:

x % y = r

या

x mod y = r

जहाँ x भाज्य है, y भाजक है, और r शेषफल है।

हमारे मामले में,

20 % 3 = 2

मॉड्यूलो कैलकुलेटर के बिना गणना

आइए एक विशिष्ट उदाहरण पर गौर करें।

उदाहरण

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

पड़ोसी ने अपने गोदाम में 15 बॉक्स गिने, जिनमें से प्रत्येक में 4 टाइल्स (60 × 60 सेमी) थीं, और दो टाइल्स अलग से थीं। यानी कुल 62 टाइल्स। और गेडे एक ही बार में सभी टाइल्स बेचना चाहता है।

अब वयन को यह पता लगाना है कि इन टाइल्स से वह कितने बाथरूम बना पाएगा। और कितनी टाइल्स बच जाएंगी जो शायद इस्तेमाल न हों?

बिना किसी मॉड्यूलो कैलकुलेटर के इसे मैन्युअली (manually) कैसे निकालें?

वयन ने अपने गेस्टहाउस के एक मानक बाथरूम का आकार मापा और पाया कि उसे प्रति बाथरूम लगभग 14 टाइल्स की आवश्यकता है।

आइए इसकी गणना करते हैं!

  1. शुरुआती संख्या या भाज्य तय करें। हमारे मामले में, यह 62 है, या पड़ोसी द्वारा दी जा रही कुल टाइल्स की संख्या।
  2. भाजक निर्धारित करें। यह 14 है—एक मानक बाथरूम के लिए आवश्यक टाइल्स की औसत संख्या।
  3. भाज्य को भाजक से भाग दें और परिणाम को पूर्ण संख्या में बदलें। 62/14 = 4.428571428571429 या 4। यानी वयन चार बाथरूम के लिए इन टाइल्स का उपयोग कर सकता है।
  4. इस पूर्णांक परिणाम को भाजक से गुणा करें। तो यह 4 × 14 = 56 होगा। यह चार कमरों के लिए आवश्यक टाइल्स की संख्या है।
  5. इस गुणनफल को मूल भाज्य से घटाएं। यानी 62 - 56 = 6। इसका मतलब है कि वयन के पास छह अतिरिक्त टाइल्स बचेंगी।

आसान और संक्षिप्त रूप में, हम इस ऑपरेशन को इस प्रकार लिख सकते हैं:

62 % 14 = 6

या

62 mod 14 = 6

वयन ने फैसला किया कि यह एक अच्छा सौदा है क्योंकि टाइल कटिंग या टूट-फूट के लिए उसे वैसे भी लगभग 10% अतिरिक्त टाइल्स रखनी चाहिए। बाकी बचे दो बाथरूम के लिए वह स्थानीय दुकान से टाइल्स खरीद लेगा।

एक ऑनलाइन मॉड्यूलो कैलकुलेटर यही परिणाम कुछ ही सेकंड में दे सकता है।

मॉड्यूलो थ्योरी और क्लॉक का उदाहरण

गणित की वह शाखा जिसे "मॉड्यूलर अरिथमेटिक (Modular Arithmetic)" कहा जाता है, चक्रीय संरचनाओं (cyclic structures) से संबंधित है। इसे समझने का सबसे आसान तरीका 12 के चक्र वाली घड़ी का डायल है। गणितज्ञों के लिए, डायल 'mod 12' पर काम करता है।

यदि आप यह जानना चाहते हैं कि क्या आप 251 घंटों को बिना शेषफल छोड़े दिनों में विभाजित कर सकते हैं, तो आप यह ऑपरेशन लागू कर सकते हैं:

251 mod 24

परिणाम 11 है, इसलिए उत्तर है—नहीं! हम केवल तभी "हाँ" कह सकते हैं जब परिणाम 0 हो।

उदाहरण

डैनियल अटलांटा से मियामी के लिए बस लेना चाहता है। बस दोपहर 1 बजे निकलती है, और सफर में 15 घंटे लगते हैं। उसके पहुँचने का समय क्या होगा? यह कुछ इस प्रकार होगा:

1 + 15 mod 12

जिसका परिणाम 4 है। यानी वह सुबह 4 बजे मियामी पहुँचेगा।

मॉड्यूलो के उपयोग (Applications of Modulo)

सम और विषम संख्याओं की पहचान

मॉड्यूलो ऑपरेटर का सबसे बुनियादी उपयोग यह जाँचना है कि कोई संख्या सम (even) है या विषम (odd)। यह इसलिए संभव है क्योंकि x % 2 हमेशा 0 या 1 लौटाता है। सम संख्याएँ हमेशा 0 लौटाती हैं क्योंकि वे 2 से पूरी तरह विभाजित हो जाती हैं, जबकि विषम संख्याएँ हमेशा 1 शेषफल देती हैं।

प्रोग्रामिंग में मॉड्यूलो का सबसे आम उपयोग तब होता है जब आप कोई टेबल प्रिंट करते हैं और उसकी पंक्तियों (rows) में अलग-अलग रंग (alternating colors) चाहते हैं। उदाहरण के लिए, आप पंक्तियों को हल्का नीला और हल्का भूरा रंग देना चाहते हैं; इसके लिए आप मॉड्यूलो की मदद से चेक कर सकते हैं कि आप सम पंक्ति पर हैं या विषम।

इकाई रूपांतरण (Unit Conversion)

इकाई रूपांतरण मॉड्यूलो ऑपरेशन के व्यावहारिक उपयोग का एक बेहतरीन उदाहरण है। इसका उपयोग अक्सर तब किया जाता है जब हम किसी छोटी इकाई (जैसे मिनट, इंच या सेंटीमीटर) को बड़ी इकाई (जैसे घंटे, मील या किलोमीटर) में बदलना चाहते हैं। ऐसी स्थितियों में दशमलव या भिन्नात्मक (fractional) संख्याएँ हमेशा उपयोगी नहीं होतीं।

उदाहरण के लिए, यदि हम जानना चाहते हैं कि 373 मिनट में कितने घंटे होते हैं, तो "6 घंटे और 13 मिनट" कहना "6.216666666666666666666667 घंटे" कहने से कहीं अधिक व्यावहारिक और स्पष्ट है।

मानक विभाजन (निकटतम पूर्ण संख्या के साथ) का उपयोग करके घंटों की संख्या निकाली जाती है, और बचे हुए मिनटों के लिए मॉड्यूलो ऑपरेशन का उपयोग किया जाता है। चाहे समय, दूरी, दबाव, ऊर्जा, या डेटा स्टोरेज की बात हो, इकाइयों को बदलने के लिए इस तरीके का व्यापक रूप से उपयोग किया जाता है।

लीप वर्ष (Leap Year) का निर्धारण

मॉड्यूलो ऑपरेटर का एक और शानदार उपयोग यह जाँचना है कि कोई वर्ष लीप वर्ष है या नहीं।

लीप वर्ष एक ऐसा कैलेंडर वर्ष होता है जिसमें सौर कैलेंडर के अनुसार एक अतिरिक्त दिन होता है। लीप वर्ष में यह अतिरिक्त दिन 29 फरवरी होता है।

1 जनवरी, 45 ईसा पूर्व को, रोमन तानाशाह जूलियस सीज़र ने रोम में एक नया कैलेंडर पेश किया, जिसे अलेक्जेंड्रिया के खगोलविदों ने विकसित किया था। यह कैलेंडर इस गणना पर आधारित था कि एक खगोलीय वर्ष लगभग 365.25 दिन (365 दिन और 6 घंटे) का होता है। इसे जूलियन कैलेंडर कहा जाता था।

इन छह अतिरिक्त घंटों को संतुलित करने के लिए, सीज़र ने लीप वर्ष की शुरुआत की। लगातार तीन वर्षों तक हर साल में 365 दिन होते थे। और हर चौथे वर्ष (जो 4 का गुणज हो) फरवरी में एक अतिरिक्त दिन जोड़ा जाता था।

हालाँकि, जैसे-जैसे समय बीतता गया, यह स्पष्ट हो गया कि केवल यह नियम पर्याप्त नहीं था।

एक औसत उष्णकटिबंधीय वर्ष (दो वसंत विषुवों के बीच का समय) वास्तव में लगभग 365 दिन, 5 घंटे और 49 मिनट का होता है। जूलियन कैलेंडर वर्ष (365 दिन और 6 घंटे) और इस वास्तविक समय के बीच लगभग 11 मिनट का अंतर था। इस तरह हर 128 साल में ये 11 मिनट मिलकर एक पूरा अतिरिक्त दिन बना देते थे।

इस संचित त्रुटि (accumulated error) को सुधारने और भविष्य में कैलेंडर को सही रखने के लिए, पोप ग्रेगरी XIII ने 1582 में कैलेंडर में सुधार किया। उन्होंने लीप वर्ष के लिए कुछ अतिरिक्त नियम जोड़े। लीप वर्ष अभी भी 4 के गुणज थे, लेकिन जो वर्ष 100 के गुणज थे, उनके लिए अपवाद बनाए गए। ऐसे शताब्दी वर्ष केवल तभी लीप वर्ष माने जाते यदि वे 400 से भी विभाज्य हों।

इस प्रकार लीप वर्ष निर्धारित करने के नियम इस प्रकार बने:

  • जो वर्ष 400 का गुणज है, वह लीप वर्ष है।
  • बाकी वर्ष जो 100 के गुणज हैं, वे लीप वर्ष नहीं हैं (उदाहरण के लिए: वर्ष 1700, 1800, 1900, 2100, 2200, 2300)।
  • अन्य वर्ष जो 4 के गुणज हैं, वे लीप वर्ष हैं।
  • बाकी सभी वर्ष लीप वर्ष नहीं हैं।

इस नियम के अनुसार, वर्ष 1700, 1800, और 1900 लीप वर्ष नहीं हैं, क्योंकि वे 100 के गुणज हैं लेकिन 400 के नहीं। जबकि वर्ष 1600 और 2000 लीप वर्ष हैं, क्योंकि वे 400 के गुणज हैं।

आइए वापस अपनी समस्या पर आते हैं।

हम जानते हैं कि:

  • यदि वर्ष mod 4 = 0 है, और वर्ष mod 100 शून्य नहीं है, तो यह लीप वर्ष है।
  • यदि वर्ष mod 400 = 0 है, तो यह एक लीप वर्ष है।
  • किसी भी अन्य मामले में, यह लीप वर्ष नहीं है।

एक साधारण पायथन स्क्रिप्ट (Python script) के साथ, आप आसानी से बता सकते हैं कि कोई वर्ष लीप वर्ष है या नहीं। यह कुछ इस तरह दिखेगा:

year = int(input('Enter year: '))

if (year%4 == 0 and year%100 != 0) or (year%400 == 0) :

	print(year, "is a leap year.")

else:

	print(year, "is not a leap year.")

प्रोग्रामिंग में मॉड्यूलो ऑपरेटर के लोकप्रिय अनुप्रयोगों (applications) में शामिल हैं:

  • यह जाँचना कि कोई संख्या सम है या विषम;
  • किसी सूची (list) में हर N-वें आइटम पर एक विशिष्ट ऑपरेशन करना;
  • किसी संख्या को एक विशिष्ट सीमा (range) तक सीमित करना;
  • सीमित विकल्पों (circular array) के माध्यम से लूप करना;
  • किसी संख्या को उलटना (reversing a number);
  • लीनियर डेटा को मैट्रिक्स में बदलना;
  • यह जाँचना कि क्या दो ऐरे (arrays) एक-दूसरे के रोटेटेड वर्जन हैं;
  • पेजिनेशन (Pagination) लागू करना।

रैंडम नंबर जनरेटर (Random Number Generator)

मॉड्यूलो ऑपरेटर का उपयोग अक्सर कंप्यूटर हार्डवेयर और टेलीकम्युनिकेशन उपकरणों में कंट्रोल नंबर बनाने और एक सीमित सीमा (limited range) के भीतर रैंडम नंबर प्राप्त करने के लिए किया जाता है। इसका एक बेहतरीन उदाहरण लीनियर कॉन्ग्रुएंशियल जेनरेटर (Linear Congruential Generator) है, जिसका प्रस्ताव 1949 में डेरिक हेनरी लेहमर ने दिया था।

यह विधि इस सूत्र पर काम करती है:

$$X_{n+1} = (a × X_n + c)\mod m$$

जहाँ:

  • m मॉड्यूलो है,
  • a मल्टीप्लायर (गुणक) है,
  • c इंक्रीमेंट (वृद्धि) है, और
  • X₀ शुरुआती मान (seed value) है।

उदाहरण के लिए, m = 11, X₀ = 9, a = 9, c = 9 के लिए, हमें रैंडम नंबर की निम्नलिखित सीरीज़ मिलती है:

9, 2, 5, 10, 0, 9, 2, 5, 10, 0, 9

क्रिप्टोग्राफी (Cryptography)

क्रिप्टोग्राफर्स को मॉड्यूलो बहुत पसंद है! ऐसा इसलिए है क्योंकि जब बहुत बड़ी संख्याओं के साथ इसका उपयोग किया जाता है, तो मॉड्यूलो की मदद से "वन-वे फंक्शन (one-way function)" बनाए जा सकते हैं। ये विशेष कार्य एक दिशा में गणना करना तो आसान बनाते हैं, लेकिन विपरीत दिशा में इसे डिकोड करना लगभग असंभव होता है।

यदि 9 किसी संख्या का वर्ग (square) है, तो आप तुरंत बता सकते हैं कि इनपुट 3 था। आप इस पूरी प्रक्रिया को आसानी से समझ सकते हैं। लेकिन, अगर मैं आपको बताऊँ कि 9 किसी संख्या का mod 29 का परिणाम है, तो यह पता लगाना बहुत मुश्किल है कि ओरिजिनल इनपुट क्या था।

क्रिप्टोग्राफर्स इसी सिद्धांत का उपयोग करते हैं। वे सुरक्षित क्रिप्टोग्राफिक कुंजियाँ (cryptographic keys) बनाने और विशाल अभाज्य संख्याएँ (prime numbers) उत्पन्न करने के लिए शेषफल (remainder) के साथ विभाजन का उपयोग करते हैं।

निष्कर्ष (Conclusion)

चाहे आप किसी स्टोरेज बॉक्स में चीजों को समान रूप से बांटने का प्रयास कर रहे हों, यह जानना चाहते हों कि कोई संख्या किसी अन्य संख्या से विभाज्य (divisible) है या नहीं, या सिर्फ समय की गणना कर रहे हों—मॉड्यूलो का उपयोग हर जगह होता है। इन सभी मामलों में, शेषफल (remainder) उतना ही महत्वपूर्ण है जितना कि विभाजन में भागफल (quotient)।

कभी-कभी समस्या आसान होती है और आप इसे दिमाग में हल कर सकते हैं। हालाँकि, जब कैलकुलेशन जटिल हो, तो तेज़ और सटीक परिणाम के लिए ऑनलाइन मॉड्यूलो कैलकुलेटर (Modulo Calculator) का उपयोग करना हमेशा सबसे अच्छा विकल्प होता है।