jerryxjr1220 发表于 2016-11-30 19:16:43

python小练习(031):找出连续数字的平方和是回文的数字

python小练习(030),传送门

今天的小练习来一道有趣的数学题:找出连续数字的平方和又是回文的数字

595 这个回文数很有趣,它可以被写作连续数字的平方数之和:6**2 + 7**2 + 8**2 + 9**2 + 10**2 + 11**2 + 12**2。

1000 以下一共有 11 个这样可以写作连续数字平方和的回文数,这 11 个数字的和是 4164。

这11个数分别是多少?分别由哪些连续数的平方和构成?

jerryxjr1220 发表于 2016-11-30 20:27:51

预留2楼
提示:
这题之所以说比较简单是因为让我们找的是连续数的平方和,这样我们只需要确定连续数的开始和结尾就能知道计算的范围了。

冬雪雪冬 发表于 2016-11-30 21:15:18

本帖最后由 冬雪雪冬 于 2016-11-30 21:20 编辑

用个简单粗暴的方法:
注: 最后一行的2应该是平方,但发帖变成了2。这个字符是chr(178).
sq =
n =
for i in range(22):
    for j in range(i + 2, 23):
      k = sum(sq)
      if k > 999:
            break
      if str(k) == str(k)[::-1]:
            print('2 + '.join(n) + '2 =', k)

麦克雷 发表于 2016-11-30 21:29:50

刚看到第6课的新手表示瑟瑟发抖{:10_266:}

jerryxjr1220 发表于 2016-12-1 21:13:33

解答:
#coding:utf-8
def is_cycle(n):
    return True if str(n) == str(n)[::-1] else False

limit = 1000
window_s = 1
window_e = int(limit ** 0.5)
while window_s<window_e:
    s = window_s*window_s
    for i in range(window_s+1,window_e):
      s += i*i
      if s >= limit:
            break
      if is_cycle(s):
             print (s, list(range(window_s,i+1)))
    window_s += 1
输出:
5
55
505
818
77
636
595
181
434
313
545

qaz123765 发表于 2017-6-21 08:20:46

for i in range(1,32):
    sum=0
    for j in range(i,32):
      sum+=j**2
      if j>i and sum<1000 and str(sum)==str(sum)[::-1]:
            print(sum)

qaz123765 发表于 2017-6-21 09:02:34

for i in range(1,32):
    sum=0
    for j in range(i,32):
      sum+=j**2
      if j>i and sum<1000 and str(sum)==str(sum)[::-1]:
            print(sum)

gonorth 发表于 2020-11-24 13:10:39

    if str(n) == str(n)[::-1]:
      return True
    return False
# 1000 以下一共有 11 个这样可以写作连续数字平方和的回文数,下方的总和是968
c = [ i*i for i in range (1,23)]
# c =

result = []
for i in range (22):
    sum_1 = 0
    for j in range (i,22):
      sum_1 += c
      if i2i(sum_1) and j > i and sum_1 <= 1000:
            result.append(, c, sum_1])


for i in range(11):
    for j in range(2):
      result = result ** (1/2)
      result = int(result)
#print(result)

for i in range (11):
    while result[-2] - result[-3] > 1:
      result.insert(-2,result[-3] + 1)

    print ( result[-1],result[:-1])
页: [1]
查看完整版本: python小练习(031):找出连续数字的平方和是回文的数字