本文共 1442 字,大约阅读时间需要 4 分钟。
为了解决这个问题,我们需要找到一个数列中第n个“谦逊数”。谦逊数是指其质因数分解中只包含2、3、5和7的数。我们可以通过生成所有可能的这些数,然后排序来找到第n个数。
def get_suffix(n): if 11 <= (n % 100) <= 13: return 'th' last_digit = n % 10 if last_digit == 1: return 'st' elif last_digit == 2: return 'nd' elif last_digit == 3: return 'rd' else: return 'th'def main(): numbers = [] for a in range(0, 31): for b in range(0, 31): for c in range(0, 31): for d in range(0, 31): num = (2 ** a) * (3 ** b) * (5 ** c) * (7 ** d) numbers.append(num) numbers = sorted(list(set(numbers))) for line in sys.stdin: n_line = line.strip() if not n_line: continue n = int(n_line) if n == 0: break if n < 1 or n > len(numbers): print("Invalid input") continue num = numbers[n - 1] suffix = get_suffix(n) print(f"The {n}{suffix} humble number is {num}.")if __name__ == "__main__": main() 这种方法确保了我们能够高效地生成和排序谦逊数,并在处理输入时快速找到所需的数。
转载地址:http://erjfk.baihongyu.com/