#完全数都以6或者8结尾
#除6以外的完全数都可以表示为连续奇立方之和
n = int(input())
cnt = 1 if n >= 6 else 0
s = 1
i = 3
while s <= n:
    s += i ** 3
    i += 2
    if s <= n and s % 10 in (6, 8):
        # 验证
        if sum(j for j in range(1, s) if s % j == 0) == s:
            cnt += 1

print(cnt)

用两个条件筛选(其实就用连续奇立方筛选也可以),最后验证,验证时用range(1,s)刚好s不算在range里,真因子不包含自身,余数为0的就是约数。

最好还是背一下完全数,毕竟也比较稀有。