本文已参与[新人创作礼]活动,一起开启掘金创作之路
背景
公元前6世纪的毕达哥拉斯是最早研究完全数的人,他已经知道6和28是完全数。毕达哥拉斯曾说:"6象征着完满的婚姻以及健康和美丽,因为它的部分是完整的,并且其和等于自身。"有些《圣经》注释家认为6和28是上帝创造世界时所用的基本数字,因为上帝创造世界花了六天,二十八天则是月亮绕地球一周的日数。圣·奥古斯丁说:"6这个数本身就是完全的,并不因为上帝造物用了六天;事实上,因为这个数是一个完全数,所以上帝在六天之内把一切事物都造好了"。
文章目录
完美数
定义: 完全数(Perfect number)又称完美数或完备数,是一些特殊的自然数,它所有的真因子(即除了自身以外的约数)的和(即因子函数)恰好等于它本身。如果一个数恰好等于它的因子之和,则称该数为"完全数"。
提示:以下是本篇文章正文内容,下面案例可供参考
一.力扣507.完美数
>> 507.力扣 <<
二、解题
1.思路
枚举出1~sqrrt(n)内所有的正因子。
如果 n 有一个大于sqrt(n)n 的因数 x,那么它一定有一个小于sqrt(n)的因数 n / x 。
因此我们可以从 1 到 sqrt(n) 枚举 n 的因数,当出现一个 n 的因数 x 时,我们还需要算上 n/x。
此外还需要考虑特殊情况,即 x = n/x,这时我们不能重复计算。
2.代码
bool checkPerfectNumber(int num){
int i, sum = 0;
if(num == 1) {
return false; // 1 必定不是完美数
}
for(i = 1; i<=sqrt(n); i++) { // 枚举出1~sqrt(n)的数
if(num % i == 0) { // 找出num的因子
sum += i;
if(i*i != num) // 执行判断
sum += num / i; //
}
}
sum -= num; //
return sum == num; //sum==num 则真
}