首页 > 学院 > 开发设计 > 正文

筛法

2019-11-11 04:34:13
字体:
来源:转载
供稿:网友

筛法

Eratosthenes筛法

const int MAXN=10000;bool check[MAXN+1];int PRime[MAXN+1];int eratosthenes(int n)//O(nlogn){ memset(check, false, sizeof(check)); int tot=0; for(int i = 2; i <= n; i ++) if(! check[i]) { prime[++ tot] = i; for(int j = i * 2; j <= n; j += i) check[j] = true; } return tot;}

Euler筛法

int euler(int n)//O(n){ memset(check, false, sizeof(check)); int tot = 0; for(int i = 2; i <= n; i ++) { if(! check[i]) prime[++ tot] = i; for(int j = 1; j < tot; j ++) { if(i * prime[j] > n) break; check[i * prime[j]] = true; if(i % prime[j] == 0) break; } } return tot;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表