求素数的几种方法
一,普通方法
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; } |