Ural 1086 Cryptography

Ural 1086 Cryptography

//题目要求第K个素数;k<=15000;把前15000个素数存起来即可,每次输出a[k] 
//Accepted
0.062 277 KB

1
  #include < iostream >
 2  #include < cmath >
 3  using   namespace  std;
 4  const   int  cnt = 15000 ;
 5  int  a[cnt + 1 ] = { 0 };
 6  bool  isprime( int  n)
 7  {
 8        if (n == 2 || n == 3 || n == 5 || n == 7 ) return   1 ;
 9        if (n % 2 == 0 || n < 2 ) return   0 ;
10        double  t = sqrt(n * 1.0 );
11        for ( int  i = 3 ; i <= t; i += 2 )
12          if (n % i == 0 ) return   0 ;
13        return   1 ;
14  }
15 
16  int  main()
17  {
18       int  n,i,k,count = 0 ;
19      cin >> n;
20       for (i = 2 ; count <= cnt; i ++ )
21      {
22         if (isprime(i))a[ ++ count] = i;
23      }
24       for (i = 1 ; i <= n; i ++ )
25        { cin >> k; cout << a[k] << endl;}
26      system( " pause " );
27       return   0 ;
28  }
29 

你可能感兴趣的:(Ural 1086 Cryptography)