完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。
它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。
例如:28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。
输入n,请输出n以内(含n)完全数的个数。
数据范围:
完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。
它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。
输入一个数字n
输出不超过n的完全数的个数
1000
3
n = int(input()) count1 = 0 for num in range(1,n+1): lst = [] for i in range(1,num+1): if num % i == 0: lst.append(i) if sum(lst[:-1]) == lst[-1]: count1 += 1 print(count1)
while True: try: def is_perfectnum(n): tem = 1 for i in range(2, n // 2 + 1): if n % i == 0: tem += i if tem == n: return True return False res = 0 n = int(input()) for i in range(2, n+1): if is_perfectnum(i): res += 1 print(res) except: break
def yinzi(num:int): que = [1] i = 2 while 1: if i == num: return sum(que) # 每次整除把两个因子都放进队列里,节省时间 if num % i == 0: if i in que: return sum(que) # 当小因子追上大因子就返回,再次节省时间 que.append(i) j = int(num/i) if j != i: que.append(j) i += 1 a = int(input()) sum1 = 0 for i in range(2,a+1): if i == yinzi(i): sum1 += 1 print(sum1)
def count(num:int,res=0): for i in range(1,num): if num % i == 0: res += i return True if res==num else False n = int(input()) ans = 0 for i in range(1,n): if count(i): ans += 1 print(ans)
# 判断这是数字是否是质数? def isPrim(n): if n <= 1: return False i = 2 while i*i <= n: # 这个等号一定不要忘记,因为3*3=9,9不是质数 if n%i == 0: return False i += 1 return True # 判断这是数字是否是完全数? def isPerfect(n): if n <= 1: return False i = 2 res = 1 while i*i <= n: if n%i == 0: res = res + i + n/i #把它的两个因数加起来 i += 1 if res == n:return True else: return False ip = int(input()) count = 0 for i in range(ip): if isPerfect(i): count += 1 print(count)
😁看输入是1000,怕超时和超内存,还好还好n = int(input()) num = 0 for i in range(1, n): yz = [1] if i > 2: if i % 2 == 0: for j in range(1, int(i/2)+1): if i % (j) == 0: if j not in yz: yz.append(j) if sum(yz) == i: num += 1 print(num)
while True: try: n = int(input()) num = 0 #初始计数为0 for i in range(1,n+1): #遍历1~n个数 lists = [] #列表用来放每个数的因子 for j in range(1,i+1): if i%j == 0: #能整除则为因子 lists.append(i//j) a = 0 #各因子之和,用于和每个数本身比较 for k in range(1,len(lists)): a = a + lists[k] if lists[0] == a: #相等,则为完全数 num = num + 1 print(num) #输出完全数个位数 except: break