Python辅助解决数学问题—— 一个数的数字平方和
一、源头
- 我们从任何一个正整数开始,比如说9246,求出它的各位数字的平方和(81+4+16+36=137),再对这个数做同样的事情(137给出1+9+49=59),并且对每次所得结果重复这一步骤,这样便得到一个整数序列。对于我们的例子,这个序列是:
9246,137,59,106,37,58,89,145,42,20,…那么,不论开始时人们选取什么整数,所得到的序列,要么出现数1(而在1之后显然就永远重复这个数字),要么出现数4(而在4之后就一直循环出现4,16,37,58,89,145,42,20)。——源自《数学中的智巧》—R·亨斯贝尔格 - 我们知道,一旦求和到1,接下来就是一直是
1,循环。一旦求和到4,那就是“4,16,37,58,89,145,42,20,4”*的循环圈。
二、python的简单验证
1. 对任意一个正整数的试验操作
a = input("请输入一个数:")
sum = 0
for i in range(10000): # 预设10000次循环(够用,即使数值各个位上都是最大的数字9,这个n位数在第一次操作后就会变为81n,位数骤降😆)
for j in range(len(str(a))):
m = str(a)[j]
sum = int(m) *int(m) + sum
print(sum)
if sum == 1:
print("到1开始循环了")
break
elif sum == 4:
print("到4开始循环了")
break
else:
a = sum
sum = 0
任意输入一个数值:
请输入一个数:2617829
239
94
97
130
10
1
到1开始循环了
请输入一个数:36653728
232
17
50
25
29
85
89
145
42
20
4
到4开始循环了
2. 对任意一个100以内的正整数的试验操作
为了更清晰地看到数字的循环规律,我们不妨对100以内的数值进行分析,看看哪些数值能够进入“1循环”,哪些数值能够进入“4循环圈”。
- 将进入“1循环”的数值找出来,代码如下:
sum = 0
for k in range(1,101):
sum = 0
a = k
for i in range(10000):
for j in range(len(str(a))):
m = str(a)[j]
sum = int(m) *int(m) + sum
if sum == 4:
break
else:
if sum == 1:
print(k,"到1了")
break
else:
a = sum
sum = 0
运行结果:
1 到1了
7 到1了
10 到1了
13 到1了
19 到1了

这篇博客从数学问题出发,讨论了如何使用Python验证一个正整数序列,其最终会进入1或4的循环。作者通过分析100以内的数字,展示了如何找出进入1循环的20个数,并探讨了这些数的平方和规律,揭示了数字变换的有趣模式。
最低0.47元/天 解锁文章
893

被折叠的 条评论
为什么被折叠?



