สมมติว่าเรามีตัวเลข n เราต้องหาความยาวของคาบเป็นค่าทศนิยม 1/n ดังนั้นหากค่าของ n คือ 7 แล้ว 1/7 =0142857 142857… ส่วนนั้นที่เป็นตัวหนากำลังพูดซ้ำ ดังนั้นความยาวของคาบคือ 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