สมมติว่ามีตัวเลข n เราต้องหาความยาวของรอบ (Period) ในค่าทศนิยมของ 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