#5977: 為什麼這樣會TLE


jimmyee (LEVEL_UP)

學校 : 國立臺灣大學
編號 : 20170
來源 : [140.112.42.92]
最後登入時間 :
2016-03-18 15:33:33
d362. 10394 - Twin Primes -- UVa10394 | From: [140.112.242.128] | 發表日期 : 2011-10-28 17:38

以下是我的作法:

 #include<iostream>
#include<cmath>
#include<stdlib.h>
using namespace std;
main()
{//==1 not prime, !=1 prime
    bool *a;
    a=(bool*)malloc(20000001);
    int i,j,k;
    k=(int)sqrt(20000000)+1;
    a[0]=a[1]=1;
    for(i=2;i<k;i++)
        if(!a[i])
            for(j=i*i;j<20000000;j+=i)
                a[j]=1;
    int n,x;
    while(cin >> n)
    {
        x=0;
        for(i=3;;i+=2)
            if(!a[i]&&!a[i+2])
            {
                x++;
                if(x==n)
                    break;
            }
        cout << "(" << i << ", " << i+2 << ")\n";
    }
}

我自己測時間clock()測時間,用100000也才608ms,為何會TLE呢

而且之前還有一次CE,一次RE

 
ZeroJudge Forum