循环除到平方根的整数部分即可,因为如果到平方根都没找到约数那说明它本身是质数,如:11的平方根约是3.2,循环到3即可,4就超了,此法可防止大质数超时

import math,sys #求平方根的方法有很多,内置的pow()和**都是
for line in sys.stdin:
    n=int(line.strip())
    cnt=0
    for num in range(4,n+1):  #本解法用while也行的,就是要多写几句
        sum = 0  #sum每次要记得归零
        for j in range(2,int(math.sqrt(num))+1):#用int截断整数部分
            a,b=divmod(num,j)
            #print(a,b)
            if b==0:
             sum+=j+a #因为是除到了一半,所以要把除数和商这一对都记下
        if sum+1 == num:#求和验证,别把1给漏了
            cnt += 1
    print(cnt)