[每日一题]16、用Python算出100万内的雷劈数

本文介绍了雷劈数的概念,源于数学家卡普列加的观察,即一个数字分裂后相加再平方等于原数。通过Python编程,展示了两种找到100万以内雷劈数的方法,包括直接计算和鼓励读者探索更高效的方式。

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

点击上方Python3X”,选择“置顶或者星标

第一时间收到精彩推送!


Python Every Day, 第 16 天



什么是雷劈数?


印度数学家卡普列加(Dattaraya Ramchandra Kaprekar, 1905 - 1986)在一次旅行中,遇到猛烈的暴风雨,他看到路边一块牌子被劈成了两半,一半上写着30,另一半写着25。这时,他忽然发现30+25=55,55^2=3025,把劈成两半的数加起来,再平方,正好是原来的数字。这种数字叫做雷劈数 或者 卡普利加数。(来自百度百科)


最小的雷劈数为81: 8+1=9 9² = 81


既然能一分为二说明这个数字的长度肯定是偶数,知道这一点就很方便的能算出100万以内的雷劈数了。


方式一、


 
 
for i in range(1000000):    i = str(i)    # 过滤数字长度不是偶数    if len(i) % 2 != 0:        continue    # a / b分别为两份数据    a = 0    b = 0    # 如果两位数直接截取    if len(i) == 2:        a = int(i[0])        b = int(i[1])    else:        # 分片截取        a = int(i[:int(len(i)/2)])        b = int(i[int(len(i)/2):])    # 得出结果    if (a + b) ** 2 == int(i):    &nb
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值