【模板】线性筛
luogu judger time:1105ms
1 #include<cstdio> 2 #include<cstring> 3 #include<cmath> 4 #include<algorithm> 5 #include<queue> 6 #define rep(i,a,n) for(int i = a;i <= n;i++) 7 #define per(i,n,a) for(int i = n;i >= a;i--) 8 #define inf 2147483647 9 #define ms(a,b) memset(a,b,sizeof(a)) 10 using namespace std; 11 typedef long long ll; 12 ll read() { 13 ll as = 0,fu = 1; 14 char c = getchar(); 15 while(c < '0' || c > '9') { 16 if(c == '-') fu = -1; 17 c = getchar(); 18 } 19 while(c >= '0' && c <= '9') { 20 as = as * 10 + c - '0'; 21 c = getchar(); 22 } 23 return as * fu; 24 } 25 const int N = 10000005; 26 //head 27 int n,top; 28 int mindiv[N],prim[670005]; 29 void initprim() { 30 rep(i,2,n) { 31 if(mindiv[i] == 0) prim[++top] = i; 32 for(int j = 1;j <= top && i * prim[j] <= n;j++) { 33 mindiv[i * prim[j]] = prim[j]; 34 if(i % prim[j] == 0) break; 35 } 36 } 37 return; 38 } 39 40 int main() { 41 n = read(); 42 initprim(); 43 // rep(i,1,top) printf("%d ",prim[i]); 44 mindiv[0] = mindiv[1] = 1; 45 int T = read(); 46 while(T--) { 47 int w = read(); 48 mindiv[w] ? puts("No") : puts("Yes"); 49 } 50 return 0; 51 }
> 别忘了 总有人在等着你

浙公网安备 33010602011771号