我们把只包含因子2、3、5的数称为丑数,例如6、8都是丑数,但14不是,因为它包含因子7。习惯上,1是第一个丑数。试编程输出第 𝑛 个丑数。 输入描述 一正整数 𝑛 ( 1 ≤ 𝑛 ≤ 10000 ) 。 输出描述 输出第 𝑛 个丑数。 样例 输入 复制 11 输出 复
时间: 2024-12-22 12:33:37 浏览: 4
求第1500个只有2,3,5因子的数
5星 · 资源好评率100%
为了找出第n个丑数,我们需要了解丑数序列的生成规则。丑数是由2、3和5的最小公倍数构成的,因为它们互质,所以每次添加新的丑数都是前三个已知丑数的乘积。我们可以从1开始,逐次将前两个丑数相乘得到下一个丑数,直到到达第n个。
下面是一个简单的Python程序来解决这个问题:
```python
def nth_Ugly_Number(n):
def gcd(a, b): # 计算最大公约数
while b:
a, b = b, a % b
return a
def lcm(a, b): # 计算最小公倍数
return a * b // gcd(a, b)
ugly = [1] # 初始丑数组,只有一个元素1
i2 = i3 = i5 = 0 # 分别跟踪2*,3*,5*的位置
while len(ugly) < n:
next_num = min(2 * ugly[i2], 3 * ugly[i3], 5 * ugly[i5])
if next_num == 2 * ugly[i2]:
i2 += 1
elif next_num == 3 * ugly[i3]:
i3 += 1
else: # next_num == 5 * ugly[i5]
i5 += 1
ugly.append(next_num)
return ugly[-1]
# 测试样例
n = int(input("请输入一个正整数:"))
result = nth_Ugly_Number(n)
print(f"第{n}个丑数是:{result}")
阅读全文