最大的回文数

注:不标明题目出处

'''
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.


回文数,题目给出两个两位数相乘所产生的最大的回文数,求两个三位数相乘所产生的最大的回文数
'''
分析:

两个三位数相乘的最大回文数,那么可以遍历所有的三位数,然后判断相乘的是否是回文,然后再在这些回文数里面找到最大的那个

如果你学过其它语言,可能会写出如下代码:

def ispalin(num):
<span style="white-space:pre">	</span>numstr = str(num)
<span style="white-space:pre">	</span>return numstr == numstr[::-1]
def bigest_palind():
	tmppalin = []
	for i in range(100, 1000):
		for j in range(100, 1000):
			tmp = first * second
			if ispalin(tmp):
				tmppalin.append(tmp)
	return max(tmppalin)
若你用python,可以写出如下代码:

def bigest_palind():
	return max([x*y for x in range(100,1000) for y in range(100,1000) if str(x*y) == str(x*y)[::-1]])

 都可以求出最后的结果 

进一步分析,对于较小的三位数相乘,即使它们的乘积是回文,那么也会有比它们大的回文满足条件

那么,我们可能会在900-1000这一段中找,所幸,这里找到一个,902*909 = 819918

那么若还有比这更大的回文数,那么其中相乘的数会在900以上

对此可缩小计算范围,如下:

def bigest_palind():
	return max([x*y for x in range(900,1000) for y in range(900,1000) if str(x*y) == str(x*y)[::-1]])


对于三位相乘,可以分解成:(100a + 10b + c)(100d + 10e + f)

然然后利用数学知识,可以得到一个满意的结果。

这里就不分析了,因为这是别人的分析过程。


对于二位数,三位数可以如此,那么对于4位数及更多位数可以如何?

还请各位自行分析。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值