ACM模板 素数打表
2014-07-16 11:21
543 查看
下面的是 欧拉筛法 更快更方便更好用的进行素数打表
下面的算法提供快速的素数打表
/*===================================================*\ 欧拉筛法 素数打表,该函数执行后 prim[]数组中存入[2,N]区间内的所有素数(从prim[0]开始存入) isPrime[i] 表示整数 i 是否为素数 函数返回[2,N]之间的素数的个数 \*===================================================*/ const int N = 1000000; bool isPrime[N+10]; int prim[80000]; //要注意保证pirm[]数组足够存储[2,N]之间的素数 int prime(){ int num = 0; memset(isPrime,true,sizeof(isPrime)); isPrime[0] = isPrime[1] = false; for(int i=2 ; i<=N ; i++){ if( isPrime[i] ) prim[num++] = i; for(int j=0 ; j<num ; j++){ if( i*prim[j]>N ) break; isPrime[ i*prim[j] ] = false; if( i%prim[j] == 0 ) break; } } return num; }
下面的算法提供快速的素数打表
/*=================================*\ 素数打表 该函数执行后在prim[]数组中存入 从2开始的从小到大的numOfPrim个素数 \*=================================*/ const int numOfPrim = 1000; int prim[numOfPrim] = {2,3}; void prime(){ int tally=2; bool flag; for(int i=5 ; tally<numOfPrim ; i+=2){ flag = true; for(int j=0 ; prim[j]*prim[j]<=i ; j++) if( i%prim[j]==0 ){ flag = false; break; } if( flag ){ prim[tally]=i; tally++; } } }
相关文章推荐
- 高效素数打表模板
- 素数打表模板
- ACM刷题之HDU————How many prime numbers(素数打表)
- 【素数打表】 【模板】
- ACM_模板_求一个数的所有因子和(预处理打表)
- 杭电ACM1431——素数回文~~打表法
- ACM刷题之HDU————相遇周期(真·打表(素数筛选))
- Lonlife-ACM 1010 - Alarm(找规律+素数打表)
- 邝斌的ACM模板(素数)
- ACM日记_17.3.27——素数打表还不会?等等,先弄明白到底什么是打表!
- ACM模板——快速判断素数
- 邝斌的ACM模板(素数筛选和合数分解)
- 模板_素数打表
- Prime Distance poj 2689 区间内的素数打表模板
- http://acm.hdu.edu.cn/showproblem.php?pid=2303 (素数打表 + java大数取模)
- 素数筛选法打表模板
- [ACM] POJ 2635 The Embarrassed Cryptographer (同余定理,素数打表)
- 打表法求素数模板
- [ACM] POJ 2635 The Embarrassed Cryptographer (同余定理,素数打表)
- 标记素数法(模板)+素数打表