# http://www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html
#
# Task:
#
# Write a program that prints the numbers from 1 to 100.
# But for multiples of three print "Fizz" instead of the number and
# for the multiples of five print "Buzz". For numbers which are multiples
# of both three and five print "FizzBuzz".
#
from sys import stdout
# fixed range
for i in range(1,101):
divisible = False
if i % 3 == 0:
stdout.write("Fizz")
divisible = True
if i % 5 == 0:
stdout.write("Buzz")
divisible = True
if not divisible:
stdout.write(str(i))
stdout.write('\n')
# This solution only uses 2 modulus operations to work, instead of the
# original post which had to compute 4 modulus operations.
#
# Using stdout instead of print allows you to omit printing the trailing newline
# character which the print function always prints, and makes it possible to
# only use 2 modulus operations.
#
# If you have to output the number, then I think the cleanest way to do it is to
# use the divisible variable. You can alternatively use nested if statements
# instead of the divisible variable, but I think it's not as readable as the
# above version.
#
# I think this solution is in the spirit of the task, especially since that
# Fizz, Bang, and FizzBang are printed INSTEAD of the number, not along with it
# as in the original post.
MSZpCYYm4nHA8QC4PY+iopO1N1z6R6HORKf6vK35XdaEYh3v5QfcMTNLpdB/gQ68l3npoPQaxv/ck+HlA0WI5QDduZzHW2jeJp56
nDwZzOK4dA/1TTSgvQ/AQKRkVTB6CwFxogAX4z1UgbDKVgAfAS3AStNy9E2PZRhw4PDTthhyyAf6C7DcaeLC3N2lvcmNAaPiFD1E
iA26z+Wvo3LPNfk/1sjY/U5MR4nJEipM8+hjo1QYo21yHczO2abM29PaN+pXLqNaJbfzYbz8VH+FUqQmifeaX8jNIMKx5uz4MPZP
AXbdMCKukVlBKg2vUb5gK5Q5uwE0gTb9FcoNNz5/sVnJXIogLUMKfx01O0B3sa8VSA4VSpNpecVF3NA498MxGEE9L/tOvLJk5NmZ
t12K8iYN/rrXSdqCDBx+v7HCRpBjNC+nvILfvHmWq/YdEdFYN6JbnbLITYDg/MlswtUd50c4AsptqPBeecIFvH4sVsV2IDLHb+DM
px3oi+nmjRseZFz3zHUtnLCCyN6unGwxSNvn882EkaZrf5SHjcc/9JCmJRUkC3gLPzgqBulYlrNBwWkYYm+5wyDasG1xyhY3gFwY
AGo2Qn3jk9kZ3jfS9t8jcKcLqldIT+LUaq5W5F0B4ZNrqLWRFyQDWdcIKSJVrb7tf2my+90sNiTeHvQqnZHL3AJJhUmlMUla/lE+
dApNdqMcwXIELjxiPM/ih/no9ag935p9TX7jFOKdlMQwuH8zQw+xgnKv0maAeyMwcNhn9umNJkhVvv6/tHTLx9slI9VABQwJrSeO
+nHaV/S985oUqOspA+YfY7qO7Wocw9zb+Dvifiij/8ooRAWmM+6fBHOdo7v41Y9sEWHvyQUMXY7OkKvXJj9qNu3egNAiiq7ZnaRU
oUt8W62Z5ma4CkL0yI4qWaJSYSEUIjL9yKVbs/Dv19tSp44c0C8CtnBdmPdILUyf7oJQa1ZNHs6XdgajHhJlj31CBcUn0zUqkE4u
YP7LUPGvo0cdhpsD+EEqxww2y5Y57FQAyKwqcXXCV/7qCSshhURMIRbGzirUlY3lYJEco9SqsiKh7mf+9TJJlKXWCiRyZrRpmERi
D6pTpigXEe5HeThyVVLHcllHl6x+TvScSIwirloCF8QTJ04A0p5d0hyES44kDYjWZgoz78yMpiHzHE2bU5icA7dKDx4RQqNaUGrc
EMosrJarhHj78DrbM3e8xB8aWAJUpAeIHv+VbLbxs2FUtHA/Y6IlXSaECcbdCx7CXj+JAwZbC5KJO0Nw2s+6gRZkfGBO72PQYQVs
OL93yKsIZ05WWnW/oIm05pGTRLmrfRsuDCcz0CzzJ9vZbs1Ocil6RrIrQ68n6/P+Wl2i+rKhBzKl1X1dv/oV2T6St4/mz3aeeKb8
b9c6c3ad0M4z2+T7/Jbat6sgCW1507lIIUrNbZfxQ9RoEzsSr/K+SJUQk129YOyT5fcnCcvnLZk8uxqYcbZiD6JCXkw3sUUl63mF
GoCjcnQLCpV9b/ubuzwgnHmaIHIndveFZPeDKRYvnew=