快捷搜索:  汽车  科技

python中对数组统计分析是什么?完全数盈数亏数到底是什么鬼

python中对数组统计分析是什么?完全数盈数亏数到底是什么鬼目前还没有发现奇完全数,偶完全数都以6或28结尾。另外,第10个完全数已经达到了54位,所以在程序中用普通算法来判断完全数会导致整数溢出。完全数所有因数(包括它本身)的倒数和等于2:于是,数学家们发现:完全数可以展开成2的幂和,看不懂?看图:完全数还可以表示成连续自然数之和:

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

python中对数组统计分析是什么?完全数盈数亏数到底是什么鬼(1)

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

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

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

于是,数学家们发现:

python中对数组统计分析是什么?完全数盈数亏数到底是什么鬼(2)

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

python中对数组统计分析是什么?完全数盈数亏数到底是什么鬼(3)

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

python中对数组统计分析是什么?完全数盈数亏数到底是什么鬼(4)

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

python中对数组统计分析是什么?完全数盈数亏数到底是什么鬼(5)

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

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

# perf_num.py import math class 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

这样就可以了:)

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

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

猜您喜欢: