Project Euler problem 4

本文深入探讨了如何用更高效的方法找到一个最大的6位回文数,该数可以表示为两个三位数的乘积。通过数学性质的运用,将问题简化为90*999次循环,极大提高了搜索效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这题的意思就是求一个最大的6位的回文数,是其可以表示为两个三位数的乘积


最普通的方法就是直接二重循环枚举了。然后判断是不是回文


不过我们需要更进一步

由于是需要6位的回文数

令该数为

P=100000x+10000y+1000z+100z+10y+x
P=100001x+10010y+1100z
P=11(9091x+910y+100z)

可以发现,其一定为11的倍数。

也就是说如果最大的6位回文数能表示成a*b

那么a能被11整除或者b能被11整除

这样我们的二重循环枚举a,b可以优化到 90 * 999的复杂度了


事实上,所有11的数的倍数有这样一个性质,奇数位数字之和与偶数位数字之和的差为11的倍数

对于偶数回文数,显然这个差为0,则这个必然是11的倍数了


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值