मान लीजिए हमारे पास एक संख्या n है। हमें 1/n के दशमलव मान में आवर्त की लंबाई खोजनी है। तो यदि n का मान 7 है, तो 1/7 = 0.142857142857... वह भाग जो बोल्ड अक्षरों में है वह दोहरा रहा है। तो यहां आवर्त की लंबाई 6 है।
एक संख्या n के लिए, आउटपुट में 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