HDU 1215 七夕节
筛法 HDU 124MS
#include <iostream> #include <cstdio> #include <cstring> using namespace std; const int Size=500000; int a[Size+1]; int main() { int m,n,i,j; for(int i=1; i<Size+1; i++) a[i]=1; for(i=2;i<=Size/2;i++) for(j=i+i;j<=Size;j+=i) a[j]+=i; scanf("%d",&m); while(m--) { scanf("%d",&n); printf("%d\n",a[n]); } return 0; }
另一种算法 HDU 982MS
#include <iostream> #include <cstdio> #include <cstring> using namespace std; const int Size=500000; int a[Size+1]; int main() { int m,n; scanf("%d",&m); while(m--) { scanf("%d",&n); int sum=1; int t=n; for(int i=2; i<t; i++) if(n%i==0){ sum+=i; if(n/i!=i) sum+=n/i; t=n/i; } printf("%d\n",sum); } return 0; }