scratch数字之谜——趣味自然数(完全数)

完全数

今天我们要找的数字叫完全数(Perfect Number),完全数又称为完美数或完备数。那它又是什么样的数字呢?

如果一个自然数恰好等于出去它本身以外的所有因数之和,那么这种数就叫完全数,这里我们先学习一个数学概念:因数。

因数

假如a*b=c(a、b、c都是整数),那么我们称a和b就是c的因数。需要注意的是,唯有被除数,除数,商皆为整数,余数为零时,此关系才成立。 反过来说,我们称c为a、b的倍数。在研究因数和倍数时,不考虑0。例如:2*6=12,那么2和6就是12的因数,12是2的倍数、也是6的倍数(12是2的6倍,同时12也是6的2倍)。

回到完全数

比如自然数6就是一个完全数,除去它自身的因数是1、2、3,三个因数之和等于6,恰好等于该数本身。

古希腊数学家毕达哥拉斯是最早研究完全数的人,他在当时已经知道6和28是完全数。毕达哥拉斯曾说:“6象征着完满的婚姻以及健康和美丽。”在完全数被发现以后,无数的数学家和业余爱好者都沉浸于寻找更多的完全数。

现在,让我们一起加入到寻找完全数的队伍中来吧,今天我们寻找10000以内的完全数。

解题思路

今天我们依然使用穷举法来解题,一次列出每一个自然数,求出不包括它自身的各个因数的和,如果这个和等于这个自然数,那么这个自然数就是一个完全数,开始写程序吧!

首先我们需要定义几个变量:

自然数:指我们今天要寻找的1-10000内所有的自然数。

数字n:指在寻找每个自然数的因数的过程中去除的数字,如果数字n能够被一个自然数整除,那么这个数字n就是这个自然数的一个因数。

因数和:一个自然数的所有因数的和(不包括它自身)。

同时我们建立一个链表:完全数,用这个链表来放置我们找到的所有完全数。

file

等了好久,总算结束了运算,一共找到了4个完美数,分别是6、28、496和8128

是不是还有更多的完美数呢?可以自己继续找找看哦!

黔西南 触摸未来
我们正身处一个只要愿意思考,就能改变世界的时代