我正在做一个任务,我的程序将询问用户一个正整数n,程序将找到正整数a和b,使a^3+b^3=n。在
我迄今为止的工作和进展如下
def ramunajan(n):
list=[]
u = int(n**(1/3)+1)
for a in range (0,u):
b = (n-a**3)**(1/3)
b = round(b)
if a**3+b**3 == n:
list.append((a,b))
return list
while True:
try:
n = input("För vilket positivt heltal n vill du hitta a och b där a^3 + b^3 = n ?\n")
except ValueError or n <= 0:
continue
else:
break
list_1 = ramunajan(int(n))
print (list_1)
(输入的文本消息为瑞典语。)
我现在的问题是,当用户输入时,例如1729,程序会相应地给出输出
For what postivie integer n would you like to find a and b, satisfying a^3 + b^3 = n ?
1729
[(1, 12), (9, 10), (10, 9), (12, 1)]
如何从列表中去掉反向重复项,即(10,9)和(12,1)?在
谢谢!在
将
u = int(n**(1/3)+1)
替换为u = int((n**(1/3))/2) + 1
所以它只检查池的前半部分,因为后半部分是重复的
相关问题 更多 >
编程相关推荐