# -*- coding: utf-8 -*-
# s = 0
# for i in range(1,N+1):
# s = s + i**2*(N//i) # step 1
# print (s)
# N = 16
# L1 = list(range(1,N+1))
# L2 = [N//i for i in L1] # step 2 [16, 8, 5, 4, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1] nums
# # [1**2,2**2.................................16**2]
# print (L1)
# print (L2)
# s = 0
# for i in range(1, N // 2 + 1):
# s = s + i ** 2 * (N // i) # part 1, before N//2
#
# def sumsqr(n):
# return int(n * (n + 1) * (2 * n + 1) / 6)
#
# s = s + (sumsqr(N) - sumsqr(N // 2)) # part 2, after N//2, 1 for all n**2, thus ΣN**2-Σ(N // 2)**2
#
# print (s)
N=16
def sumsqr(n):
return int(n * (n + 1) * (2 * n + 1) / 6)
m = int(N ** (1 / 2.0))
s = 0
i = 1
while i <= N ** (1 / 2.0): # step 3 L2中的1一直到最后,2到第8项,3到第5项...就是前面的16,8,5。平方根后面的个数是前面的叠加。
s = s + i ** 2 * (N // i) # part 1, before N**0.5, i from 1 to 4, i ** 2 * (N // i)
if i ** 2 != N: # part 2, i from 1 to 3,
s = s + (sumsqr(N // i) - sumsqr(m)) # 1.sumsqr(16)-sumsqr(4), 即[3, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1]位置上的N**2各一个
i = i + 1 # 2.sumsqr(8)-sumsqr(4), 即[3, 2, 2, 2]的N**2各一个
# 3.sumsqr(5)-sumsqr(4), 即[3]的N**2各一个
print (s)