我正在尝试 Project Euler 并坚持这个:
回文数的两种读法都是一样的。由两个 2 位数字的乘积构成的最大回文数是 9009 = 91 99。
找出由两个 3 位数字的乘积构成的最大回文数。
for i in range(1000,100,-1):
for j in range(1000,100,-1):
test = i*j
test = str(test) #turn product into string
test2 = test[2:] #take last two numbers
test2 = test2[::-1] #flip them
if test[:2] == test2: #if it's a palindrome, the first two should
print(i, "\t", j) #match the flip of last two
input("\n\nPress the ENTER key to exit.")
运行时没有任何反应:命令行计算,但不打印任何内容。该程序确实结束了。
我知道更大的数字不仅仅是第一个和最后两个数字,但应该有足够的回文数,我可以通过它们查看。
这是下一个:
求和为 1000 的毕达哥拉斯三元组。a^2 + b^2 = c^2, a+b+c=1000
for a in range(1,32):
for b in range(1,32):
c = (a**2 + b**2)**.5
if a + b + c == 1000:
print(a,"\t",b,"\t",c)
input("\n\nPress the ENTER key to exit.")
与上一个程序一样,没有输出……但同样,它确实结束了。但我注意到它们都嵌套了 for 循环。这可能与它有关吗?