前n个数中可以整除i的个数为,n/i;
所以前n个数的约数和就等价于 n/i 的前 n 项和
#include<cstdio>
int n,ans;
int main()
{
scanf("%d",&n);
for(int i=1,j;i<=n;i=j+1)//节约时间
{
j=n/(n/i);
ans+=(n/i)*(j-i+1);
}
printf("%d",ans);
return 0;
}
前n个数中可以整除i的个数为,n/i;
所以前n个数的约数和就等价于 n/i 的前 n 项和
#include<cstdio>
int n,ans;
int main()
{
scanf("%d",&n);
for(int i=1,j;i<=n;i=j+1)//节约时间
{
j=n/(n/i);
ans+=(n/i)*(j-i+1);
}
printf("%d",ans);
return 0;
}