हमें पूर्णांक मान दिए गए हैं जैसे कि a_num जो अंश को संग्रहीत करेगा और p_den जो हर को संग्रहीत करेगा जो एक अभाज्य संख्या होनी चाहिए। कार्य यह जांचना है कि p_den से विभाजित करने के बाद a_num पर किए गए ऑपरेशन मिडी के प्रमेय को साबित करते हैं या नहीं।
मिडी के प्रमेय को सिद्ध करने के चरण हैं-
-
इनपुट अंश को a_num के रूप में और हर को p_den के रूप में इनपुट करें जो हमेशा एक प्रमुख मान होना चाहिए।
-
संख्याओं को विभाजित करें। दोहराए जाने वाले दशमलव मानों की जाँच करें।
-
दशमलव मानों को तब तक संग्रहीत करें जब तक वे दोहराए नहीं जाते।
-
जांचें कि क्या अंक सम हैं, यदि हां, तो उन्हें आधा कर दें
-
दोनों संख्याओं को जोड़ें। यदि आउटपुट 9 की एक स्ट्रिंग है तो यह मिडी के प्रमेय को सिद्ध करता है।
आइए इसके लिए विभिन्न इनपुट आउटपुट परिदृश्य देखें -
में - int a_num =1 और int p_den =19
बाहर − दोहराए जाने वाले दशमलव हैं:052631578947368421 सिद्ध मिडी प्रमेय
स्पष्टीकरण − ऊपर बताए गए चरणों का पालन करके मिडी की प्रमेय यानी
. की जांच करें-
भाग 1 / 19 =052631578947368421
-
दोहराए जाने वाले दशमलव मान हैं-:052631578947368421.
-
अंकों को आधे में विभाजित करें यानी 052631578 947368421।
-
दोनों हिस्सों को जोड़ें यानी 052631578 + 947368421 =999,999,999।
-
जैसा कि हम देख सकते हैं, 999,999,999 9 की स्ट्रिंग है जो मिडी के प्रमेय को साबित करती है।
में −int a_num =49, int p_den =7
बाहर - कोई आवर्ती दशमलव नहीं
स्पष्टीकरण - जैसा कि हम देख सकते हैं कि 49/7 कोई दशमलव मान उत्पन्न नहीं करता है क्योंकि 49 पूरी तरह से 7 से विभाज्य है। इसलिए, आउटपुट कोई दोहराव नहीं है।
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
-
पूर्णांक मानों को int a_num और int p_den के रूप में इनपुट करें।
-
मिडी के प्रमेय को सिद्ध करने के लिए फ़ंक्शन को Midys_theorem(a_num, p_den) कहते हैं।
-
फ़ंक्शन के अंदर check_Midys()
-
इंट पहले से 0 और इंट लास्ट से 0 तक वैरिएबल बनाएं
-
जांचें कि क्या फ़ंक्शन चेक (वैल) FALSE लौटाता है, तो मिडी का प्रमेय लागू नहीं होता है।
-
ELSE IF len% 2 =0 फिर i से 0 तक के लिए लूप प्रारंभ करें जब तक कि i लेन/2 से कम न हो और पहले * 10 + (str[i] - '0') पर सेट करें और अंतिम से अंतिम * 10 + (str[ लेन / 2 + i] - '0') और प्रिंट ने मिडी के प्रमेय को साबित कर दिया।
-
-
ELSE, प्रिंट मिडी का प्रमेय लागू नहीं है।
-
समारोह के अंदर Midys_theorem(int a_num, int p_den)
-
पूर्णांक प्रकार मानों को map_val के रूप में मैप करने और मानचित्र को साफ़ करने के लिए मानचित्र प्रकार चर बनाएं।
-
रिमाइंडर को a_num% p_den के रूप में सेट करें।
-
प्रारंभ करें जबकि रिमाइंडर 0 के बराबर नहीं है और map_val.find(reminder) map_val.end() के बराबर है, फिर map_val[reminder] को result.length() पर सेट करें, रिमाइंडर को रिमाइंडर * 10, अस्थायी से रिमाइंडर / p_den, परिणाम के लिए परिणाम + to_string(temp) और रिमाइंडर % p_den को रिमाइंडर।
-
IF शेष =0 जांचें, फिर -1 ELSE लौटाएं, गणना toresult.substr(map_val[reminder])
सेट करें -
वापसी की संख्या
-
-
फ़ंक्शन के अंदर बूल चेक (इंट वैल)
-
लूप फॉर आई से 2 तक शुरू करें जब तक कि वैल/2 से कम न हो जाए। IF val% i =0 की जाँच करें फिर FALSE लौटाएँ अन्यथा TRUE लौटाएँ।
-
उदाहरण
#include <bits/stdc++.h> using namespace std; bool check(int val){ for(int i = 2; i <= val / 2; i++){ if(val % i == 0){ return false; } } return true; } void check_Midys(string str, int val){ int len = str.length(); int first = 0; int last = 0; if(!check(val)){ cout<<"\nNot applicable for Midy's theorem"; } else if(len % 2 == 0){ for(int i = 0; i < len / 2; i++){ first = first * 10 + (str[i] - '0'); last = last * 10 + (str[len / 2 + i] - '0'); } cout<<"\nProved Midy's theorem"; } else{ cout<<"\nNot applicable for Midy's theorem"; } } string Midys_theorem(int a_num, int p_den){ string result; map<int, int> map_val; map_val.clear(); int reminder = a_num % p_den; while((reminder != 0) && (map_val.find(reminder) == map_val.end())){ map_val[reminder] = result.length(); reminder = reminder * 10; int temp = reminder / p_den; result += to_string(temp); reminder = reminder % p_den; } if(reminder == 0){ return "-1"; } else{ string count = result.substr(map_val[reminder]); return count; } } int main(){ int a_num = 1; int p_den = 19; string result = Midys_theorem(a_num, p_den); if(result == "-1"){ cout<<"No Repeating Decimal"; } else{ cout<<"Repeating decimals are: "<<result; check_Midys(result, p_den); } return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा
Repeating decimals are: 052631578947368421 Proved Midy's theorem