题目 1040 Prime Number 九度Online Judge

来源:互联网 发布:破解java游戏网站 编辑:程序博客网 时间:2024/04/29 04:39
题目描述:

Output the k-th prime number.

输入:

k≤10000

输出:

The k-th prime number.

样例输入:
37
样例输出:
517


/*这是我自己写的代码,给的结果是Time Limit Exceed超时,调用了C++  clock()方法,当输入10000的时候,时间超过了1s,所以报错!程序结果是没问题的只能说OJ是有点坑爹!最烦的就是这种给一个很大的数需要逐个逐个判断的!最后是AC大牛写的程序,贴出来大家参考参考,一起进步!ps:真希望自己将来找工作的时候机试是真机考试而不是OJ,不然的话要哭了! */#include <iostream>using namespace std;int main(){    int n;    int i,j;    int count=0;    while (cin>>n)    {        count=0;        i=2;        //for (i=2;;i++)        if (n<1)        {            continue;        }        while (1)        {                         for (j=2;j<=i;j++)            {                if (i==j)                {                    count++;                    //cout<<count;                }                if (i%j==0)                {                    break;                }            }            if (n==count)            {                cout<<i<<endl;;                break;            }            i++;        }    }    return 0;}/**************************************************************    Problem: 1040    User: Carvin    Language: C++    Result: Time Limit Exceed****************************************************************/

以下是来及于互联网的AC大牛写的:

    #include<iostream>      #include<string.h>      #include<stdio.h>      using namespace std;      #define M 1000010      bool flag[M];      int prime[M];      void getprime()      {          int cnt=1;          for(int i=2;i<M;++i)          {              if(!flag[i])              {                  prime[cnt++]=i;                  for(int j=i;j<M;j+=i)                      flag[j]=true;              }          }      }      int main(int argc, char *argv[])      {          int k;          // freopen("1040.in","r",stdin);          getprime();          prime[0]=0;          while(scanf("%d",&k)!=EOF)          {              printf("%d\n",prime[k]);          }          return 0;      }  



0 0
原创粉丝点击