这是我目前知道的打素数表最快的方法了………… 差不多是O(n)的,100000以内花了0.005秒。
1 int prime[100005], np, vis[100005];
2
3 void get_prime(int n){
4 mset(prime); mset(vis);
5 np = 0;
6 for(int i = 2; i < n; i++){
7 if(vis[i] != 1)
8 prime[np++] = i;
9 for(int j = 0, t; j < np && (t = prime[j]*i) < n; j++){
10 vis[t] = 1;
11 if(i % prime[j] == 0) break;
12 }
13 }
14 }
时间: 2024-10-22 20:39:33