完美数问题
前言
了解完美数并会使用python3计算完美数
一、完美数是什么?
完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。如果一个数恰好等于它的真因子之和,则称该数为“完全数”。第一个完全数是6,第二个完全数是28,第三个完全数是496,后面的完全数还有8128、33550336等等。截至2018年,相关研究者已经找到51个完全数。
例如:
第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6。
第二个完全数是28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28
二、题目
A perfect number is a number where the sum of all the proper factors (factors which are not the number itself) is equal to the number itself.
You are given a number N and your program must output perfect if N is perfect, and not perfect if N is not perfect.
Input
Line 1: N, the number you must check whether it’s perfect or not
Output
Line 1: perfect or not perfect depending on if the number is perfect or not
Constraints
1 ≤ N ≤ 10^4
Example
Input
11
Output
not perfect
解题思路
计算出1到10000的完美数表,拿输入的数字与表中进行比较
实现代码如下:
#完美数
import sys
import math
# coding:utf-8
n = int(input())
a=range(1,10000)
b=range(1,10000)
result=[]
for i in a:
tmp=[]
for k in b:
if k<i:
if not i%k:
tmp.append(k)
else:
continue
else:
break
count=0
for m in tmp:
count=count+m
if count==i:
result.append(i)
else:
continue
if n in result:
print("this number is perfect")
else:
print("this number is not perfect")
总结
在这里贴上大佬的解决方法快速得到1-10000的完美数
i=int(input())
s=0
for k in range(1,i):
if i%k==0:
s=s+k
if i==s:
print ("yes")
else: print("no")