求素数的几种方法
一,普通方法
C++ Code
1 2 3 4 5 6 7 8 9 10 11 12 13 | bool pd(int m) { int i, k; k = (int)sqrt(m); for(i = 2; i <= k; i++) if(m % i == 0) break; if(i > k) return true; else return false; } |
二,筛选法求
C++ Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #include<stdio.h> #include<math.h> #define N 10000001 bool prime[N]; int main() { int i, j; for(i = 2; i < N; i++) if(i % 2) prime[i] = true; else prime[i] = false; for(i = 3; i <= sqrt(N); i++) { if(prime[i]) for(j = i + i; j < N; j += i) prime[i] = false; } for(i = 2; i < 100; i++) if( prime[i] ) printf("%d ", i); return 0; } |