মনে করুন আমাদের একটি সংখ্যা n আছে। আমাদের 1/n-এর দশমিক মানয়ের পিরিয়ডের দৈর্ঘ্য বের করতে হবে। তাই যদি n-এর মান 7 হয়, তবে 1/7 = 0.142857142857... বল্ড অক্ষরের অংশটি পুনরাবৃত্ত হচ্ছে। তাই এখানে পিরিয়ডের দৈর্ঘ্য ৬।
একটি সংখ্যা 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