HDU 2136

来源:互联网 发布:王者传奇羽毛升级数据 编辑:程序博客网 时间:2024/06/05 12:17


数论的题目吧,开始用打表的方法求出素数的位置,后来在去搜索,这样超时了,可能是因为数据的组数比较多吧!!!

如果在打表的时候把小于1000000所有的数全部打上去,直接输出去q[i]的值就行啦!!

AC代码:

#include<iostream>#include<cstdio>#include<cstring>#include<cmath>using namespace std;int q[1000008];int ant;void prime(){    memset(q,0,sizeof(q));    int i,j;    ant=0;    q[1]=0;    for(i=2;i<=1000000;i++)    {        if(q[i]==0)        {            ant++;            for(j=i;j<=1000000;j+=i)            {                q[j]=ant;            }        }    }}int main(){    int n;    prime();    while(~scanf("%d",&n))    {        printf("%d\n",q[n]);    }    return 0;}

路途中。。。。

原创粉丝点击