python中对数组统计分析是什么?完全数盈数亏数到底是什么鬼
python中对数组统计分析是什么?完全数盈数亏数到底是什么鬼目前还没有发现奇完全数,偶完全数都以6或28结尾。另外,第10个完全数已经达到了54位,所以在程序中用普通算法来判断完全数会导致整数溢出。完全数所有因数(包括它本身)的倒数和等于2:于是,数学家们发现:完全数可以展开成2的幂和,看不懂?看图:完全数还可以表示成连续自然数之和:
说起《几何原本》,那是数学中神一般的存在,它奠定了现代几何的基础。而其作者就是大名鼎鼎的欧几里得,在数学史上当然也是一个伟大的奠基人,而且以高产著称,其中,完全数就是他发现的。
完全数,定义为所有因数相加(因数中去掉自身),和等于自己的自然数。例如第一个完全数是6,它除去自身的因数是1,2,3,1 2 3的和恰好是6,第二个完全数是28。
相应的,因数和小于自身的称为亏数,大于自身的叫做盈数。
那么,完全数有什么用途呢?答,目前还没发现。数学家是一个伟大的职业,一生中研究的问题较少,如果没有阶段性的进展,那是有点悲哀的,只能作为下一个数学家的阶梯,一步一步往上爬。就拿完全数来说,没发现它的用途之前,它只不是一个数字游戏。但是它的证明难度却不是你我凡人能够Hold住的,付出多少数学家的心血,才发现这么一些”有趣”的东西。
于是,数学家们发现:
完全数可以展开成2的幂和,看不懂?看图:
完全数还可以表示成连续自然数之和:
完全数所有因数(包括它本身)的倒数和等于2:
目前还没有发现奇完全数,偶完全数都以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
这样就可以了:)
好了,今天就介绍到这里了,大家如果发现更有趣的,请在下面分享吧。
原创版权,如引用需要注明来源和链接。