筛选法求素数
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; } |