Когда вы строите дробь a/b, у вас есть последовательность остатков:
a_0=a%b, a_1=(a_0*p)%b, a_2=(a_1*p)%b,... где p - основание системы счисления. Как только два остатка a_x и a_y совпали - все цифры между ними ((a_x*p)/b, (a_{x+1}*p)/b,...,(a_{y-1}*p)/b) образуют период. Как эффективно найти период такой последовательности - ищите. При небольших b достаточно взять массив M с индексами от 0 до b-1, и для каждого вычисленного остатка проверять ячейку M[a_y]. Если в неё ещё ничего не записали, записать M[a_y]=y. Если там лежит какой-то x, то период найден.
Есть и другие способы, без использования массивов.