九度oj1440

来源:互联网 发布:经典的爱情电影 知乎 编辑:程序博客网 时间:2024/06/01 18:35

题目地址:http://ac.jobdu.com/problem.php?pid=1040

主要就是练习素数筛选法
*本题首先要注意:需要得到的最大一个素数是第10000个,那么要遍历的数至少要大于这个的100倍,这一点做题的时候不容易把握,会导致测试的结果很多都是0;
**(第一次写这个——————激动加紧张,以后技术练好了再美化)

#include<stdio.h>#define N 1000000int prime[N];int mark[N];//数组下标从1开始那么就需要多一个存储的空间,否则就是边界值不正确了void init(){    int i,j,k;    for(k=1;k<=N;k++)    {            mark[k]=0;//不是双等于    }    int size=1;    for(i=2;i<=N;i++)    {        if(mark[i]==0)        {            prime[size++]=i;            if(i>=10000)//这个是必须的,因为会在下面一句判别的时候引起越界,没有这一句依然会引起WA                continue;            for(j=i*i;j<=N;j+=i)                mark[j]=1;        }    }}int main(){    init();    int n;    prime[0]=0;    while(scanf("%d",&n)!=EOF)        {            printf("%d\n",prime[n]);            }    return 0;}