说起《几何原本》,那是数学中神一般的存在,它奠定了现代几何的基础。而其作者就是大名鼎鼎的欧几里得,在数学史上当然也是一个伟大的奠基人,而且以高产著称,其中,完全数就是他发现的。

完全数,定义为所有因数相加(因数中去掉自身),和等于自己的自然数。例如第一个完全数是6,它除去自身的因数是1,2,3,1+2+3的和恰好是6,第二个完全数是28。

相应的,因数和小于自身的称为亏数,大于自身的叫做盈数。

那么,完全数有什么用途呢?答,目前还没发现。数学家是一个伟大的职业,一生中研究的问题较少,如果没有阶段性的进展,那是有点悲哀的,只能作为下一个数学家的阶梯,一步一步往上爬。就拿完全数来说,没发现它的用途之前,它只不是一个数字游戏。但是它的证明难度却不是你我凡人能够Hold住的,付出多少数学家的心血,才发现这么一些”有趣”的东西。

于是,数学家们发现:

完全数可以展开成2的幂和,看不懂?看图:

完全数还可以表示成连续自然数之和:

完全数所有因数(包括它本身)的倒数和等于2:

目前还没有发现奇完全数,偶完全数都以6或28结尾。另外,第10个完全数已经达到了54位,所以在程序中用普通算法来判断完全数会导致整数溢出。

虽然普通算法实现没太大意义,但是我们还是用python看看吧:

# perf_num.pyimport mathclass math_game: # 如果是完全数,返回True def is_perf_num(num): facs = [] # list初始化,自然数都有因数1,顺便加入吧,省得后面计算 facs.append(1) # 前面加了1,所以从2开始去探测是否能够除尽 # 使用平方根作为截止条件,省去后面过多循环。 for fac in range(2, int(math.sqrt(num) + 1)): if(num % fac == 0): facs.append(fac) # 如果当前因数除尽,同时加入另外一个因数 # 节省循环次数,同时消除类似5*5这样重复因数 if(num / fac != fac): facs.append(num / fac) sum = 0 for fac in facs: sum += fac return sum == num

python作为一种脚本语言,调试起来很方便,直接python命令进入解释器环境即可:

python>>> from perf_num import math_game>>> math_game.is_perf_num(6)True

但是,这里有一个大坑一定要注意,解释器加载模块后有缓存,所以如果你修改了文件,需要在环境中重新加载,才能反映最近的更新:

>>> importlib.reload(sys.modules['perf_num'])>>> from perf_num import math_game

这样就可以了:)

好了,今天就介绍到这里了,大家如果发现更有趣的,请在下面分享吧。

原创版权,如引用需要注明来源和链接。

python因数之和等于数字本身,完全数,盈数,亏数到底是什么鬼?python实现给你看...相关推荐

  1. python因数之和等于数字本身_python找出因数与质因数的方法

    最近有一个学弟问我一些求解质因数的问题,帮他解决问题的同时自己也试着写了几个差不多效果的脚本,有很多不同的思路,以下是相关脚本. n = int(input("input number: & ...

  2. 因数之和等于数字本身的数称为完全数,比数字本身大的数称为丰沛数, 比数字本身小的数称为不足数

    1.因数之和等于数字本身的数称为完全数,比数字本身大的数称为丰沛数, 比数字本身小的数称为不足数. 编写程序,输出所有[100,10000)区间的所有完全数以及丰沛数和不足数的个数. 请在[pytho ...

  3. 完全数是由古人创造的一种整数,其因数的和(不包含本身)加起来就是数字本身。例如 6= 1+2+3 28=1+2+4+7+14 因数的和比数字本身大的数称为充沛数,因数和比数字本身大的数称为充沛数,因数

    完全数是由古人创造的一种整数,其因数的和(不包含本身)加起来就是数字本身. 例如 6= 1+2+3 28=1+2+4+7+14 因数的和比数字本身大的数称为充沛数,因数和比数字本身小的数称为不足数.编 ...

  4. 水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身

    习题5-6 使用函数输出水仙花数 水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身.例如:153=13 + 53 + 33​​ . 本题要求编写两个函数,一个判断给定整数 ...

  5. 浙大版《C语言程序设计(第3版)》题目集习题5-6 使用函数输出水仙花数 (20 分) 水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=1 ​3 ​​ +

    水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身.例如: ​​ . 本题要求编写两个函数,一个判断给定整数是否水仙花数,另一个按从小到大的顺序打印出给定区间(m,n)内所 ...

  6. 水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=13+53+33。 本题要求编写程序,计算所有N位水仙花数。

    水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身.例如:153=13+53+33. 本题要求编写程序,计算所有N位水仙花数. 输入格式: 输入在一行中给出一个正整数N(3 ...

  7. 水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=1 3 +5 3 +3 3 。 本题要求编写两个函数,一个判断给定整数是否水仙花数,另一个按从

    函数接口定义: int narcissistic( int number ); void PrintN( int m, int n ); 函数narcissistic判断number是否为水仙花数,是 ...

  8. 水仙花数是指一个n位数(n≥3),它的每个位上的数字的n次幂之和等于它本身。例如:1^3+5^3+3^3=153

    #错误做法,坐等大佬解答 sum = 0 n = int(input('请输入位数:')) for i in range(10**(n-2),10**(n-1)):k = str(i)for j in ...

  9. 水仙花数是指一个三位数,它的每个位上的数字的 3次幂之和等于它本身,请编程找出所有水仙花数。(例如:153 = 1^3 + 5^3 + 3^3 )

    #水仙花数 for i in range(100,1000):ge =i%10shi=i//10 %10bai=i//100if i==ge**3 +shi ** 3+bai**bai:print(& ...

最新文章

  1. android monkey原理_Monkey与Appium的使用
  2. java取网页数据_浅析JAVA实现网页取内容
  3. httpd-2.2和httpd-2.4安装部署
  4. Py之wxPython:利用wxPython设计GUI界面(图片背景+简单按钮)
  5. VS开发C#窗体应用时怎样设置窗体属性
  6. webpack4.x版本与webpack-cli高版本之间存在的bug
  7. 从编译器层面理解C#中的闭包的这个坑!
  8. java gson fromjson,Gson的fromJson()方法
  9. mysql 新增字段时判断字段是否存在
  10. Python删除字符串中的符号
  11. 除了深度学习,机器翻译还需要啥?
  12. 磁盘提示:使用驱动器中的光盘之前需要将其格式化怎么办?
  13. 01. Linux文件目录结构及存放内容(功能)
  14. 数据中心网络架构 — 网络带宽的收敛比
  15. Android Studio实现一个校园图书管理系统
  16. 如何将竖屏视频转换为横屏,横屏转为竖屏
  17. 1.简述GPS载波相位测量的基本原理。2.在高精度GPS测量工作中,为什么需要采用载波相位测量方法进行三维定位。3.载波相位测量中,确定整周未知数主要有哪些方法?GNSS测量与数据处理(第六周作业)
  18. golang 运行命令行进行图片格式转换(jpg转png)
  19. H5调摄像头并扫描条形码初探
  20. DWR(Direct Web Remoting)原理和实例

热门文章

  1. 2021年中式面点师(初级)证考试及中式面点师(初级)模拟考试题
  2. 记录一些 arm64指令的用法
  3. 水倒七分、茶倒八分、酒倒满
  4. 算法题|-灯泡开关问题
  5. Linux下的Cadence软件的spice和Verliog步骤(这是最最最为简单的超详细!!!!)
  6. 检测到 Mac 文件格式: 请将源文件转换为 DOS 格式或 UNIX 格式
  7. 安装计算机一级出现appcrash,问题事件名称: APPCRASH 终于解决了。
  8. 调用高德地图API接口,实现地铁站经纬度采集
  9. CC00052.LBCHAC——|Selinux.V2|——|2台server|
  10. 《德鲁克管理思想精要》读书笔记8 - 时间