Repetend Checking

Run Settings
LanguagePython
Language Version
Run Command
# Written by *** and Eric Martin for COMP9021 ''' Prompts the user for two strictly positive integers, numerator and denominator. Determines whether the decimal expansion of numerator / denominator is finite or infinite. Then computes integral_part, sigma and tau such that numerator / denominator is of the form integral_part . sigma tau tau tau ... where integral_part in an integer, sigma and tau are (possibly empty) strings of digits, and sigma and tau are as short as possible. ''' import sys from math import gcd try: numerator, denominator = input('Enter two strictly positive integers: ').split() except ValueError: print('Incorrect input, giving up.') sys.exit() try: numerator, denominator = int(numerator), int(denominator) if numerator <= 0 or denominator <= 0: raise ValueError except ValueError: print('Incorrect input, giving up.') sys.exit() has_finite_expansion = False integral_part = 0 sigma = '' tau = '' # Replace this comment with your code # begin modflags = [] divflags = [] div = numerator mod = None start = None while True: t = div // denominator mod = div % denominator if mod in modflags: if mod > 0: divflags.append(t) start = modflags.index(mod) break else: modflags.append(mod) divflags.append(t) div = mod * 10 integral_part = divflags[0] if start != None: sigma = ''.join(map(str, divflags[1:start + 1])) tau = ''.join(map(str, divflags[start + 1:])) else: sigma = ''.join(map(str, divflags[1:])) has_finite_expansion = start == None # end if has_finite_expansion: print(f'\n{numerator} / {denominator} has a finite expansion') else: print(f'\n{numerator} / {denominator} has no finite expansion') if not tau: if not sigma: print(f'{numerator} / {denominator} = {integral_part}') else: print(f'{numerator} / {denominator} = {integral_part}.{sigma}') else: print(f'{numerator} / {denominator} = {integral_part}.{sigma}({tau})*')
Editor Settings
Theme
Key bindings
Full width
Lines