मान लीजिए कि हमारे पास एक संख्या n है। हमें 1/n के दशमलव मान में आवर्त की लंबाई ज्ञात करनी है। तो अगर n का मान 7 है, तो 1/7 =0.142857 142857... मोटे अक्षरों में वह भाग दोहरा रहा है। तो यहाँ अवधि की लंबाई 6 है।
संख्या n के लिए, आउटपुट में n अलग-अलग अवशेष हो सकते हैं, लेकिन अवधि पहले शेष से शुरू नहीं हो सकती है क्योंकि कुछ प्रारंभिक शेष गैर-दोहराव हैं। इसलिए हमें यह सुनिश्चित करना होगा कि अवधि से एक शेष चुना गया है, शेष (एन + 1) से शुरू करें, और अगली घटना की तलाश शुरू करें। (n+1)वें शेषफल और अगली घटना के बीच की दूरी, अवधि की लंबाई है।
उदाहरण
#include<iostream> using namespace std; int periodLength(int n) { int remainder = 1; int length = 0; for (int i = 1; i <= n+1; i++) remainder = (10*remainder) % n; int d = remainder; do { remainder = (10*remainder) % n; length++; } while(remainder != d); return length; } int main() { int n = 7; cout << "Period length of 1/"<<n<<" is: " << periodLength(n) << endl; }
आउटपुट
Period length of 1/7 is: 6