हमें पूर्णांक मान दिए गए हैं जैसे कि 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