链接:https://www.nowcoder.com/acm/contest/158/A
来源:牛客网
q次询问,每次给一个x,问1到x的因数个数的和。
输入描述:
第一行一个正整数q ;
接下来q行,每行一个正整数 x
输出描述:
共q行,每行一个正整数表示答案
示例1
输入
4
1
2
3
10
输出
1
3
5
27
转化为倍数的个数和,比如n=10,因数2的个数为[n/2]=5,枚举1到根号n
乘以2是因为一个数的因子有i,则x/i也是x的因子,所以每个因子有两个
减去w*w是因为有重复的i==x/i
#include <bits/stdc++.h>
using namespace std;
int main(){
int t;
cin>>t;
while(t--){
int n;
cin>>n;
long long sum=0;
int w = sqrt(n);
for(int i=1;i<=w;i++)
sum += n/i;
cout<<(long long )(sum*2-w*w)<<endl;
}
return 0;
}