点击上方“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