#Python #Advantages: - Go as Precise as you want or can handle - Find out the repetitiveness from the quotient - Fast Late to the party but here you go: def ManualDivision(Dividend, Divisor, acQPrecision, BreakOnRepetitive): Repetitive = False RepetitiveIndex = 0 bcQComplete = False acQComplete = False bcQ = '' #before comma Quotient acQ = '' #after comma Quotient history = [] a = 0 b = 0 while (not bcQComplete or not acQComplete): if not bcQComplete: for digit in map(int, str(Dividend)): a = int(str(a) + str(digit)) if a in history: if not Repetitive: Repetitive = True RepetitiveIndex = len(history) - len(bcQ) if BreakOnRepetitive: break else: history.append(a) if a < Divisor: b = 0 bcQ += '0' else: pQ = 0 result = a - Divisor while result >= 1: pQ += 1 result -= Divisor b = pQ * Divisor bcQ += str(pQ) a -= b bcQComplete = True if not acQComplete: acQPrecision -= 1 if acQPrecision <= 0: acQComplete = True a = int(str(a) + str('0')) if a in history: if not Repetitive: Repetitive = True RepetitiveIndex = len(history) - len(bcQ) if BreakOnRepetitive: break else: history.append(a) if a < Divisor: b = 0 acQ += '0' else: pQ = 0 result = a - Divisor while result >= 1: pQ += 1 result -= Divisor b = pQ * Divisor acQ += str(pQ) a-=b return '{0}.{1} \nRepetitive: {2} from position {3} acQ \nHistory:{4}'.format(bcQ, acQ, Repetitive, RepetitiveIndex, history) #Result Quotient = ManualDivision(91,256,100,False) #Dividend = 91, Divisor = 256, precision= 100, breakonrepetitive=False print(Quotient) >00.3554687499999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 >Repetitive: True from position 9 acQ >History:[9, 91, 910, 1420, 1400, 1200, 1760, 2240, 1920, 1280, 2560]