#!/usr/local/bin/python3.8

from math import sqrt, modf, floor, ceil, pi, e

n = (1 + sqrt(5)) / 2
# n = pi
# n = e
# n = sqrt(5)
# n = sqrt(7)
# n = sqrt(11) + 1
print('n = {0:.3f}'.format(n))

# No use for the pigeonhole principal here. A dup means there is an
# earlier "000" or "999" multiplier.
for i in range(1, 1002):
	# The next two lines get the first three digits to the right of the
	# decimal point.
	# Get the fractional part.
	f = modf(i * n)[0]
	# Move the decimal point three places to the right.
	mult = floor(1000 * f)
	# It can happen that a single multiplier can result in a fractional
	# part < 0.001.
	if mult == 0:
		print('{0:d} is a good 000 multiplier'.format(i))
		print(i * n)
		print(round(i * n))
		print('Approximation is {0:d} / {1:d} =~ {2:.3f} =~ {3:.3f}.'.
		   format(floor(i * n), i, floor(i * n) / i, n))
		break
	# It can also happen that a single multiplier can result in a
	# fractional part >= 0.999.
	elif mult == 999:
		print('{0:d} is a good 999 multiplier'.format(i))
		print(i * n)
		print(round(i * n))
		print('Approximation is {0:d} / {1:d} =~ {2:.3f} =~ {3:.3f}.'.
		   format(ceil(i * n), i, ceil(i * n) / i, n))
		break