筛选法的理解 就是把所有共同属性的不同元素同时筛选出来
比如 6 是2 的倍数 也是三的倍数 就加2 再加3
#include <iostream>
#include <cmath>
#include <cstring>
#include <string>
using namespace std;
int main()
{
int a[500005];
memset(a,0,sizeof(a)); //数组清0是个好习惯
int i;
for(i=2;i<=500000;i++)
{
for(int j=i+i;j<=500000;j+=i)
{
a[j]=a[j]+i; //把有共同属性的元素都筛出来了
}
}
int t;
cin>>t;
while(t--)
{
int n;
while(cin>>n)
{
cout<<a[n]+1<<endl; //因为1也是约数
}
}
return 0;
}
看千遍不如打一遍
照着打十遍不如算一遍