擅长:python、mysql、java
<pre><code>import math
def main():
numbersOfResultsToFind = getNumberOfTaxisToFind()
foundResults = 0
numberToCheck = 1
while(foundResults < numbersOfResultsToFind):
result = getTaxi(numberToCheck)
if len(result) > 1:
foundResults = foundResults + 1
print(numberToCheck, result)
numberToCheck = numberToCheck + 1
def getNumberOfTaxisToFind():
return int(input("How many taxinumbers do you want to find? "))
def getThirdSquareFloored(value):
value = value**(1./3)
value = math.floor(value)
return value
def getTaxi(numberToCheck):
result = []
upperLimit = getThirdSquareFloored(numberToCheck)
for a in range(1, upperLimit+1):
b = round((numberToCheck-a**3)**(1./3))
if(a**3+b**3 == numberToCheck and a < b):
result.append((a, b))
if len(result) == 2:
break
return result
main()
</code></pre>
<p>非常感谢你的帮助!这是我更新的代码,运行速度更快。我将b值设置为从a计算,而不是使用嵌套for循环。我还实现了一个if len(result),在代码末尾中断
如果已经找到一对,就没有理由继续寻找</p>