今天是第四题。

A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 * 99.Find the largest palindrome made from the product of two 3-digit numbers.

回文数,是指一个整数从左到右和从右到左相等的书,比如说11,121,112232211。这道题的要求是找出最大的一个回文数,要求这个数是由两个三位数相乘而得。

判断回文数简介的方式是利用python的字符串反转功能,即若s[::-1]==s,则该字符串是个回文字符串。思路是判断所有三位数两两乘积,判断是否是回文数,然后储存在一个数组中。利用max寻求数组中的最大值。这种方式简单易实现,但是不利于得到是哪两个数相乘的结果。另一方面,还是效率问题,直接历遍有所可能效率太低。

Python实现:
#========================================================================
# FileName: Palindromic.py
# Author: hsyyf
# Email: 931107419@qq.com
# HomePage: http://www.hsyyf.me
# LastChange: 2012-06-26 12:14:52
#========================================================================
x=[]
for i in range(999,100,-1):
for j in range(999,100,-1):
m=i*j
s=str(m)
if s==s[::-1]:
x.append(m)
break
print(max(x))

input("Input Enter to End")

结果是906609.
 

作者 hsyyf

《Project Euler 4》有3条评论
  1. t=1
    for i in range(999,100,-1):
    —-for j in range(999,100,-1):
    ——–m=i*j
    ——–s=str(m)
    ——–if s==s[::-1]:
    ————if m>t:
    —————-t=m
    —————-a=i
    —————-b=j
    ————break #跳出内层循环
    print(m)
    print(a)
    print(b)

    #看看行不行,上一条没有缩进

回复 Zhengheng Li 取消回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注