鱼C论坛

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

[已解决]快乐的数字,用python

[复制链接]
发表于 2021-11-8 21:03:53 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 仔鹿 于 2021-11-8 21:03 编辑

实现下面程序功能:求解指定区间中的快乐数字收敛到1需要的平均计算次数。
快乐的数字按照如下方式确定:  从一个正整数开始,用其每位数的平方之和取代该数,并重复这个过程,直到最后数字要么收敛等于1且一直等于1,要么将无休止地循环下去且最终不会收敛等于1。能够最终收敛等于1的数就是快乐的数字。
每次用每位数的平方之和取代该数的过程为一个计算次数,当计算次数超过2000次时,认为概述不是快乐数字,概述不计入统计。

例如: 19 就是一个快乐的数字,计算过程如下:
1**2 + 9**2 = 82
8**2 + 2**2 = 68
6**2 + 8**2 = 100
1**2 + 0**2 + 0**2 = 1

输入描述

600,700

输出描述

输入区间a,b:600,700
[(608, 2), (617, 3), (622, 5), (623, 5), (632, 5), (635, 6), (637, 5), (638, 5), (644, 3), (649, 6), (653, 6), (655, 3), (656, 4), (665, 4), (671, 3), (673, 5), (680, 2), (683, 5), (694, 6), (700, 5)]
平均计算次数:4.4
最佳答案
2021-11-8 21:16:15
本帖最后由 傻眼貓咪 于 2021-11-8 21:18 编辑
  1. def f(n):
  2.     res = 0
  3.     for s in str(n):
  4.         s = int(s)
  5.         res += s**2
  6.     return res

  7. def happy(n):
  8.     count = 0
  9.     while n > 1 and count < 2000:
  10.         count += 1
  11.         n = f(n)
  12.     return (n == 1, count)
  13. res = []
  14. sum = 0
  15. for n in range(600, 700):
  16.     if happy(n)[0]:
  17.         res.append((n, happy(n)[1]))
  18.         sum += happy(n)[1]

  19. print(res)
  20. print(f"平均计算次数:{round(sum/len(res), 1)}")
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-8 21:16:15 | 显示全部楼层    本楼为最佳答案   
本帖最后由 傻眼貓咪 于 2021-11-8 21:18 编辑
  1. def f(n):
  2.     res = 0
  3.     for s in str(n):
  4.         s = int(s)
  5.         res += s**2
  6.     return res

  7. def happy(n):
  8.     count = 0
  9.     while n > 1 and count < 2000:
  10.         count += 1
  11.         n = f(n)
  12.     return (n == 1, count)
  13. res = []
  14. sum = 0
  15. for n in range(600, 700):
  16.     if happy(n)[0]:
  17.         res.append((n, happy(n)[1]))
  18.         sum += happy(n)[1]

  19. print(res)
  20. print(f"平均计算次数:{round(sum/len(res), 1)}")
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-11-8 21:33:05 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-14 03:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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