Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Java

जावा में सकारात्मक तर्कसंगत संख्या उत्पन्न करने के लिए एल्गोरिदम

परिमेय संख्याएं - एक संख्या जिसे p/q के रूप में व्यक्त किया जाता है। इस शर्त को देखते हुए कि p और q दोनों पूर्णांक होने चाहिए और q 0 के बराबर नहीं होना चाहिए।

सकारात्मक परिमेय संख्याएं वे संख्याएँ हैं जिनका अंतिम मान धनात्मक है। इसके लिए या तो p और q दोनों धनात्मक हों या p और q दोनों ऋणात्मक हों।

इस समस्या में किसी दिए गए नंबर तक सकारात्मक यादृच्छिक संख्या उत्पन्न करने के लिए। हमें n के लिए एक सीमित संख्या में धनात्मक परिमेय संख्याएँ उत्पन्न करनी हैं अर्थात् हम 1 से n के बीच परिमेय संख्याएँ प्राप्त करेंगे। इस एल्गोरिथम के लिए, हम यादृच्छिक संख्याएँ उत्पन्न करेंगे जहाँ 1 <=p <=n और 1 <=q <=n.

आइए अवधारणा को बेहतर ढंग से विस्तृत करने के लिए एक उदाहरण लेते हैं -

इनपुट :3आउटपुट :1, ½ , ⅓ , 2 , ⅔ , 3/2 , 3 ।

स्पष्टीकरण - इस उदाहरण में, हम p और q दोनों के लिए 1 से 3 के बीच के मानों पर विचार करेंगे।

इसके लिए डिज़ाइन किया गया एल्गोरिदम उन सेटों का उपयोग करके काम करेगा जो आवश्यक संयोजनों को बेहतर ढंग से उत्पन्न करने के लिए सर्वोत्तम डेटा संरचनाएं हैं। चूंकि सेट को मैप किया जा सकता है और मैपिंग क्रम n से n तक हो सकता है यानी सेट 1 में प्रत्येक मान को सेट 2 में मानों के साथ ठीक से मैप किया जा सकता है जिससे मैपिंग बनायी जा सके जो आवश्यक जोड़े उत्पन्न कर सके। आवश्यक जोड़े बनाने के लिए हम सकारात्मक मूल्यों के सेट का उपयोग करेंगे और समाधान प्राप्त करने के लिए मूल्यों को मैप करेंगे।

आइए एक उदाहरण लेते हैं,

(1,1) , (1,2) , (1,3)(2,1) , (2,2) , (2,3)(3,1) , (3,2) , ( 3,3)

आइए इन मानों को एक उल्टे एल आकार ट्रैवर्सल विधि में फिर से व्यवस्थित करें -

(1,1)(1,2) , (2,2) , (2,1)(1,3) , (2,3) , (3,3) , (3,2) , ( 3,1)

ये वे मान हैं जिनका उपयोग हमने सकारात्मक तर्कसंगत एल्गोरिथम उदाहरण उत्पन्न करने में किया है। बेहतर ढंग से समझने के लिए कि हमने ठीक वही मान प्राप्त किए हैं, बस इन मानों को प्राप्त करने के लिए ∕ के साथ प्रतिस्थापित करें -

1/11/2 , 2/2 , 2/11/3 , 2/3 , 3/3 , 3/2 , 3/1

हालांकि 1∕1, 2∕2, 3∕3 जैसे मान हैं जो समान मान की ओर इशारा करते हैं। हम सबसे बड़े सामान्य भाजक का उपयोग करके इन मानों को समाप्त कर देंगे।

उदाहरण

आयात करें निजी अंतर भाजक; सार्वजनिक सकारात्मक तर्कसंगत संख्या (इंट अंश, इंट हर) {यह। अंश =अंश; यह। हर =हर; } @ ओवरराइड पब्लिक स्ट्रिंग टूस्ट्रिंग () { अगर (denominator ==1) {रिटर्न Integer.toString(numerator); } और {रिटर्न Integer.toString(numerator) + '/' + Integer.toString(denominator); } }} निजी स्थिर int gcd(int num1, int num2){ int n1 =num1; इंट n2 =num2; जबकि (n1!=n2) { अगर (n1> n2) n1 -=n2; अन्य n2 - =n1; } वापसी n1; } निजी स्थैतिक सूची उत्पन्न (int n){ सूची सूची =नई ArrayList<>(); अगर (एन> 1) { पॉजिटिवराशनल नंबर परिमेय =नया पॉजिटिवरेशनल नंबर (1, 1); सूची जोड़ें (तर्कसंगत); } के लिए (इंट लूप =1; लूप <=n; लूप++) {इंट जंप =1; अगर (लूप% 2 ==0) कूद =2; अन्य कूद =1; के लिए (इंट पंक्ति =1; पंक्ति <=लूप - 1; पंक्ति + =कूद) { अगर (जीसीडी (पंक्ति, लूप) ==1) {पॉजिटिवरेशनल नंबर परिमेय =नया पॉजिटिवरेशनल नंबर (पंक्ति, लूप); सूची जोड़ें (तर्कसंगत); } } के लिये (int col =लूप - 1; col>=1; col -=jump) {if (gcd(col, loop) ==1) { पॉजिटिवराशनल नंबर परिमेय =नया पॉजिटिवरेशनल नंबर (लूप, कॉल); सूची जोड़ें (तर्कसंगत); } } } वापसी सूची; } सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] args) {सूची तर्कसंगत =उत्पन्न (5); System.out.println(rationals.stream()। map(PositiveRationalNumber::toString)। कम करें ((x, y) -> x + "," + y).get ()); }}

आउटपुट

1, 1/2, 2, 1/3, 2/3, 3/2, 3, 1/4, 3/4, 4/3, 4, 1/5, 2/5, 3/5 , 4/5, 5/4, 5/3, 5/2, 5

  1. जावा में EnumMap वर्ग

    Java.util.EnumMap वर्ग एनम कुंजियों के उपयोग के लिए एक विशेष मानचित्र कार्यान्वयन है। EnumMap के बारे में महत्वपूर्ण बिंदु निम्नलिखित हैं - एनम मैप में सभी कुंजियाँ एक ही एनम प्रकार से आनी चाहिए जो कि स्पष्ट रूप से या परोक्ष रूप से निर्दिष्ट है, जब नक्शा बनाया जाता है। Enum मैप्स को उनकी चाबिय

  1. जावा में एक असमर्थित ऑपरेशन अपवाद कैसे उत्पन्न करें?

    एक असमर्थित ऑपरेशन अपवाद RuntimException . का उपवर्ग है जावा में और यह इंगित करने के लिए फेंका जा सकता है कि अनुरोधित ऑपरेशन समर्थित नहीं है। असमर्थित ऑपरेशन अपवाद क्लास जावा कलेक्शंस फ्रेमवर्क का सदस्य है। यह अपवाद लगभग सभी ठोस संग्रहों जैसे सूची, कतार, सेट . द्वारा फेंका गया है और मानचित्र । सि

  1. पायथन परिमेय संख्याएँ (अंश)

    कोई भी संख्या जिसे भागफल या भिन्न के रूप में p/q के रूप में व्यक्त किया जा सकता है, परिमेय संख्या कहलाती है। पायथन लाइब्रेरी का फ्रैक्शंस मॉड्यूल परिमेय संख्या अंकगणित के लिए कार्यक्षमता प्रदान करता है। यह मॉड्यूल एक भिन्न वर्ग को परिभाषित करता है। इसका उद्देश्य विभिन्न तरीकों से निम्न प्रकार से गठ