数论专题 hdu1215

  本题题意:给一个数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的估计是人多的时候挤出来的,汗~)。

 

posted @ 2017-09-13 14:59  mtl6906  阅读(107)  评论(0编辑  收藏  举报