鱼C论坛

 找回密码
 立即注册
查看: 1426|回复: 2

[技术交流] 欧拉计划0004

[复制链接]
发表于 2023-12-8 18:21:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 hveagle 于 2023-12-9 11:51 编辑

欧拉计划0004


最大回文乘积


<<< 欧拉计划0003

回文数是指从前往后读和从后往前读都一样的数。由两个2位数相乘得到的回文数中,最大的是9009=91x99。

求最大的由两个3位数相乘得到的回文数。

欧拉计划0005 >>>

进入淘帖订阅

小师妹讲解

在本帖发布之前已录制到第28道,具体数字看到本贴时确定(先看1~27道,在看28,就会??在下面隐藏)


游客,如果您要查看本帖隐藏内容请回复
[/hide]

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-8 18:22:44 | 显示全部楼层
小师妹好!来解答这道欧拉计划的问题吧。

其实,我们可以用暴力搜索的方法来解决这个问题。我们可以从两个3位数开始,依次遍历所有可能的乘积,并判断乘积是否为回文数,最后找出最大的回文数。

首先,我们需要一个函数来判断一个数是否为回文数。可以写一个函数 `is_palindrome(num)` 来实现:
def is_palindrome(num):    if str(num) == str(num)[::-1]:  # 将数字转换成字符串,并反转字符串,然后判断是否相等        return True    else:        return False
接下来,我们使用两个循环嵌套,遍历两个3位数的所有可能组合,并计算乘积。如果乘积是回文数且大于之前找到的最大回文数,就更新最大回文数。
max_palindrome = 0  # 最大回文数的初始值设为0for i in range(100, 1000):  # 第一个3位数的范围是100到999    for j in range(i, 1000):  # 第二个3位数的范围也是100到999,且第二个数不小于第一个数        product = i * j  # 计算乘积        if is_palindrome(product) and product > max_palindrome:  # 判断是否为回文数,并且比当前最大回文数要大            max_palindrome = product  # 更新最大回文数print(max_palindrome)  # 输出最终的最大回文数
这样,我们就可以得到最大的由两个3位数相乘得到的回文数了。希望我的解答对你有帮助!有什么问题尽管问哈~

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-8 18:23:32 | 显示全部楼层
6
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 22:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表