本题题意:给一个数n,求出其因子和(包括1但不包括自身)。
代码如下:
#include <stdio.h> #define MAX 500000 int a[MAX+1]; int T,n; void Table() { int p = MAX / 2; int t = 1; int i; while(t<=p) { for(i=t+t;i<=MAX;i+=t)a[i]+=t; t++; } } int main(void) { Table(); scanf("%d",&T); while(T--) { scanf("%d",&n); printf("%d\n",a[n]); } return 0; }
这道题直接暴力枚举因子会超时,先枚举素数再判断可以降到500ms左右,然后。。。。又是这个神一般的倍数打表法。。最佳优化大概是124ms(评论区那个73ms的估计是人多的时候挤出来的,汗~)。