Cho n, tìm độ dài chu kỳ lặp trong phần thập phân của 1/n. Ví dụ n=7 → 1/7=0.142857... chu kỳ 6.
Tìm dư (n+1) rồi tìm lần xuất hiện tiếp theo của dư đó, khoảng cách là độ dài chu kỳ.
Ví dụ
#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; }
Kết quả
Period length of 1/7 is: 6