展开全部
不知道你的完美数是怎2113么定义的,原先5261写了一个判断4102完美数,并输出小于输入值N的所有完1653美数的,稍微修改了下。#!/usr/bin/python
# -*- coding:utf-8 -*-
# @Time : 2018/6/16 16:45
# @File : NthPerfectNumber.py
"""
输出第N个完美数
"""
def is_perfect(anum):
"""判断一个数是不是完美数"""
assert anum > 0, '完美数是大于0的整数'
ll = []
num = 0
for i in xrange(1, anum):
if anum % i == 0:
ll.append(i)
num = sum(ll)
if num == anum:
return True
else:
return False
def nthPerfectNumber(n):
m = 0
t = 1
temp = []
while m < n:
if is_perfect(t):
temp.append(t)
m += 1
t += 1
else:
t += 1
else:
return temp[n - 1]
if __name__ == '__main__':
nths = int(raw_input(u'请输入需要返回的第N个完美数:'))
print u'第{0}个完美数是:{1}'.format(nths, nthPerfectNumber(nths))