更新:
#用完及时del set((t,i)) _sum+=sum(_set) del(_set)
更新:原来的第四行开始,改成:
不存约数,只记录它们的和
_sum=1
#这里int(n/2)曾错写成int(n/2+1)
#更新:用int(n**0.5)+1快很多
for i in range(2,int(n**0.5)+1):
t,r=divmod(n,i)
if r==0:
_sum+=sum(set((t,i)))
def fun(n):
if n<3:
ot = 0
else:
yins=[1]
#这里int(n/2)曾错写成int(n/2+1)
#更新:用int(n**0.5)+1快很多
for i in range(2,int(n/2)):
t,r=divmod(n,i)
if r==0:
#曾错写成[r,t]
yins.extend([i,t])
#16/4=4,yins里面就会有2个4,要变成set
if sum(set(yins)) == n:
ot = 1
#曾忘记加这个else, fun(n)返回None, int+None会有TypeError,
#但之前因except里这作break,看不到报错
else:
ot=0
return ot
while 1:
try:
n=int(input())
tot=0
for ii in range(1,n+1):
tot+=fun(ii)
print(tot)
except Exception as e:
if not isinstance(e,EOFError):
print('leo_you_have_Error')
break


京公网安备 11010502036488号