所以我試圖解決的挑戰是找到由兩個3位數字產品組成的最大回文。我是Python的新手,所以我的代碼還不夠優雅或折射,但有一個邏輯錯誤,我似乎無法找到。查找Python中兩個3位數字的最大回文數
def ispalindrome(n):
rev_n = str(n)[::-1]
if n == rev_n:
return True
else:
return False
first_num = 100
second_num = 100
mylist=[]
while first_num < 1000:
while second_num < 1000:
item = first_num * second_num
mylist.append(item)
second_num += 1
second_num = 100
first_num +=1
# print (mylist)
num_as_string = []
for i in mylist:
i = str(i)
num_as_string.append(i)
print("Total products of two 3-digit numbers: {}").format(len(num_as_string))
print("-----------------------------------------------------")
def convert_to_num_list(string_list):
new_num_list = []
item = int(string_list)
new_num_list.append(item)
return new_num_list
palindrome_list = []
for j in num_as_string:
if ispalindrome(j) == True:
palindrome_list.append(j)
palindrome_list.sort()
# print(palindrome_list)
x = convert_to_num_list(j)
largest_palindrome = max(x)
print("Total palindroms of product of two 3-digit numers: {}").format(len(palindrome_list))
print("Largest palindrome = {}").format(largest_palindrome)
問題是我得到的最大回文數是580085,它是995 * 583,但不是最大的迴文。我相信最大的迴文是906609,這是993 * 913,但我的代碼沒有找到。任何人都可以幫我解決我邏輯中的缺陷嗎?
如果你想形成數量最多,爲什麼從100開始,上升到1000?如果你從999開始到100(一次在每個櫃檯一個單位),你可以在第一個迴文時立即停止搜索。 – jsbueno
@jsbueno謝謝。這聽起來像是獲得這一結果的最有效方式。 – Burner918
@jsbueno這種做法當然不會發生在我身上。這顯然是有效的,如果我使用900萬個數字而不是900個,我會對這個建議感到高興。但我懷疑它也可能很難得到正確的答案。 – BoarGules