在C++14编译成功,但复制粘贴到洛谷就失败(选择的也是C++14)
#include <iostream>
#include <cmath>
using namespace std ;
bool a[10000001] ;
int p [100001] ;
void fp ( int n ) {
memset ( a , 0 , sizeof ( a ) ) ;
memset ( p , 0 , sizeof ( p ) ) ;
int i = 2 , s = 1 ;
a[1] = 1 ;
while ( i <= sqrt ( n ) ) {
if ( a[i] == 0 ) p[s]= i , s ++ ;
int j = 1 ;
do {
a[i*p[j]] = 1 , j ++ ;
} while ( i % p[j-1] != 0 ) ;
i ++ ;
}
int sp = 1 ;
for ( int k = 1 ; k <= n ; k ++ ) {
if ( a[k] == 0 ) p[sp] = k , sp ++ ;
}
}
int main () {
int n , m , s ;
scanf ( "%d%d" , &n , &m ) ;
fp ( n ) ;
for ( int i = 1 ; i <= m ; i ++ ) {
scanf ( "%d" , &s ) ;
printf ( "%d\n" , p[s] ) ;
}
return 0 ;
}