Project Euler 4 | 寒山烟雨
现在的位置: 首页 > 小试身手 > 正文

Project Euler 4

2012年06月26日 小试身手 ⁄ 共 830字 ⁄ 字号 评论 3 条 ⁄ 阅读 2,581 views 次

今天是第四题。

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实现:

 Python | 
 
 copy code |
?

01
#========================================================================
02
#   FileName: Palindromic.py
03
#     Author: hsyyf
04
#      Email: 931107419@qq.com
05
#   HomePage: http://www.hsyyf.me
06
# LastChange: 2012-06-26 12:14:52
07
#========================================================================
08
x=[]
09
for i in range(999,100,-1):
10
    for j in range(999,100,-1):
11
        m=i*j
12
        s=str(m)
13
        if s==s[::-1]:
14
            x.append(m)
15
            break
16
print(max(x))
17
 
18
input("Input Enter to End")
19

结果是906609.
 

0
【上篇】
【下篇】

目前有 3 条留言    访客:3 条, 博主:0 条

  1. Zhengheng Li 2012年06月27日 上午12:40  @回复  Δ-49楼 回复
    Firefox Firefox Ubuntu Ubuntu

    应该把 print(m)改成 print(t)

  2. Zhengheng Li 2012年06月27日 上午12:35  @回复  Δ-48楼 回复
    Firefox Firefox Ubuntu Ubuntu

    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)

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

  3. Zhengheng Li 2012年06月27日 上午12:27  @回复  Δ-47楼 回复
    Firefox Firefox Ubuntu Ubuntu

    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)

给我留言

留言无头像?


×