'''
一个数如果它的质因子只有2、3、5或7,那么我们称这个数为丑数。
例如前20个丑数为[1,2,3,4,5,6,7,8,9,10,12,14,15,16,18,20,21,24,25,27]。
现要求编程找出第n个丑数。
'''
def f(n):
s = [1]
a = b = c = d = 0
while len(s) < n:
s.append(min(s[a]*2, s[b]*3, s[c]*5, s[d]*7))
if s[-1] == s[a] * 2: a += 1
if s[-1] == s[b] * 3: b += 1
if s[-1] == s[c] * 5: c += 1
if s[-1] == s[d] * 7: d += 1
return s[-1]
for i in range(1, 40):
print(f'{i}: {f(i)}', end = " ")
if i % 5 == 0: print()