আমাদেরকে 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 হিসাবে পূর্ণসংখ্যার মানগুলিতে ইনপুট করুন।
-
মিডির উপপাদ্য প্রমাণ করার জন্য ফাংশনটিকে মিডিস_থিওরেম(a_num, p_den) হিসাবে কল করুন।
-
ফাংশনের ভিতরে check_Midys()
-
int প্রথম থেকে 0 এবং int-এর শেষ 0
হিসাবে ভেরিয়েবল তৈরি করুন -
পরীক্ষা করুন যদি ফাংশন চেক(ভাল) মিথ্যা প্রদান করে তাহলে মিডির উপপাদ্য প্রযোজ্য নয় প্রিন্ট করুন।
-
অন্যথায় যদি len % 2 =0 হয় তাহলে i থেকে 0 পর্যন্ত FOR লুপ শুরু করুন যতক্ষণ না i len/2 থেকে কম হয় এবং প্রথমে সেট করুন * 10 + (str[i] - '0') এবং শেষ থেকে শেষ * 10 + (str[ len / 2 + i] - '0') এবং প্রিন্ট মিডির উপপাদ্য প্রমাণ করেছে।
-
-
অন্যথায়, প্রিন্ট মিডির উপপাদ্য প্রযোজ্য নয়।
-
ফাংশনের ভিতরে 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])
-
রিটার্ন গণনা
-
-
ফাংশনের ভিতরে বুল চেক(int val)
-
i থেকে 2 থেকে i val/2 থেকে কম না হওয়া পর্যন্ত FOR লুপ শুরু করুন। 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