|
发表于 2010-10-14 11:18:17
|
显示全部楼层
MATLAB版, BASE-6筛法
- function p = prime6(n)
- %PRIME6 Generate list of prime numbers.
- % PRIME6(N) is a row vector of the prime numbers less than or
- % equal to N.
- if length(n)~=1, error('N must be a scalar'); end
- m=floor(n/3); m1=floor(sqrt(n)/3);
- g = 1:m;
- Q=5; T=2;
- for k = 1:m1
- P=Q; Q=Q+T; T=6-T;
- if g(k)
- M=floor((P^2-1)/3);
- W=floor((P*Q-1)/3);
- g(M:2*P:m) = 0; g(W:2*P:m) = 0;
- end
- end
- g=g(g>0); p=[2 3 4*g+1-floor(g/2)*2];
- p=p(p<=n);
复制代码 |
|