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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
筛法素数产生器
语法:result=prime( int a[], int n); 参数: a[]: 用于返回素数的数组 n: 产生n以内的素数,按升序放入a[]中 返回值: n以内素数的个数 注意: 其中W[],B[]已知,W[i]>0且W[i]与W[j]互质, 求a 源程序: int prime( int a[], int n) { int i,j,k,x,num,*b; n++; n/= 2 ; b=( int *)malloc( sizeof ( int )*(n+ 1 )* 2 ); a[ 0 ]= 2 ; a[ 1 ]= 3 ; num= 2 ; for (i= 1 ; i<= 2 *n; i++) b[i]= 0 ; for (i= 3 ; i<=n; i+= 3 ) for (j= 0 ; j< 2 ; j++) { x= 2 *(i+j)- 1 ; while (b[x]== 0 ) { a[num++]=x; for (k=x; k<= 2 *n; k+=x) b[k]= 1 ; } } return num; } |