Python辅助解决数学问题——一个数的数字平方和

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

一、源头

  • 我们从任何一个正整数开始,比如说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
11开始循环了
请输入一个数:36653728
232
17
50
25
29
85
89
145
42
20
44开始循环了

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

运行结果:

1171101131191
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值