gpt4 book ai didi

python - 创建一个程序,返回超过非负整数 n 的最小立方体

转载 作者:太空宇宙 更新时间:2023-11-03 12:10:40 31 4
gpt4 key购买 nike

所以我正在尝试创建一个程序来生成大于整数 n 的最小立方体。

def first_cube_above(n):
#Return the smallest cube which exceeds the non-negative integer n.

num = 1
total = 0

while total != 1:
if pow(int(pow(n+num, 1/3)), 3) == n + num:
total = 1
else:
num += 1

print(n + num)

这似乎适用于小整数,但我不明白为什么它对其他人不起作用。任何帮助将不胜感激。

最佳答案

正如@martin.macko 指出的那样,您(错误地)假设 pow(pow(x, 1/3), 3) == x。由于浮点错误,这不成立。事实上,快速检查我们发现(可能)只有少数整数满足上述条件:

good = [x for x in range(10**7) if pow(pow(x, 1/3), 3) == x]
good_cubes = [x**3 for x in range(1000) if pow(pow(x**3, 1/3), 3) == x**3]
# len(good) = 50

在我的机器上,good 数字是

0, 1, 2, 6, 8, 9, 12, 16, 19, 23, 25, 27, 35, 44, 65, 66, 72, 73, 76, 83, 85, 91, 94, 96, 117, 127, 130, 139, 142, 147, 158, 170, 175, 513, 514, 520, 539, 547, 549, 551, 553, 562, 563, 576, 581, 601, 605, 663, 690, 699

good_cubes

0, 1, 8, 27

您可以看到列表中最大的完美立方体是 27,因此您的错误。您可以尝试计算下一个最大的立方体,如下所示:next_cube = ceil(x**(1/3))**3 其中 ceil 是来自 math 模块的函数。

关于python - 创建一个程序,返回超过非负整数 n 的最小立方体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40985926/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com