मान लीजिए कि हमारे पास एक संख्या 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