Merge branch 'for-slava' of git://git.rfc1149.net/factor
commit
e4d6611070
|
@ -5,6 +5,8 @@ IN: math.primes.tests
|
|||
{ 1237 } [ 1234 next-prime ] unit-test
|
||||
{ f t } [ 1234 prime? 1237 prime? ] unit-test
|
||||
{ { 2 3 5 7 } } [ 10 primes-upto >array ] unit-test
|
||||
{ { 2 } } [ 2 primes-upto >array ] unit-test
|
||||
{ { } } [ 1 primes-upto >array ] unit-test
|
||||
{ { 999983 1000003 } } [ 999982 1000010 primes-between >array ] unit-test
|
||||
|
||||
{ { 4999963 4999999 5000011 5000077 5000081 } }
|
||||
|
@ -13,6 +15,12 @@ IN: math.primes.tests
|
|||
{ { 8999981 8999993 9000011 9000041 } }
|
||||
[ 8999980 9000045 primes-between >array ] unit-test
|
||||
|
||||
{ { } } [ 5 4 primes-between >array ] unit-test
|
||||
|
||||
{ { 2 } } [ 2 2 primes-between >array ] unit-test
|
||||
|
||||
{ { 2 } } [ 1.5 2.5 primes-between >array ] unit-test
|
||||
|
||||
[ 2 ] [ 1 next-prime ] unit-test
|
||||
[ 3 ] [ 2 next-prime ] unit-test
|
||||
[ 5 ] [ 3 next-prime ] unit-test
|
||||
|
|
|
@ -46,11 +46,24 @@ PRIVATE>
|
|||
next-odd [ dup prime? ] [ 2 + ] until
|
||||
] if ; foldable
|
||||
|
||||
: primes-between ( low high -- seq )
|
||||
<PRIVATE
|
||||
|
||||
: (primes-between) ( low high -- seq )
|
||||
[ [ 3 max dup even? [ 1 + ] when ] dip 2 <range> ]
|
||||
[ <primes-vector> ] 2bi
|
||||
[ '[ [ prime? ] _ push-if ] each ] keep clone ;
|
||||
|
||||
PRIVATE>
|
||||
|
||||
: primes-between ( low high -- seq )
|
||||
[ ceiling >integer ] [ floor >integer ] bi*
|
||||
{
|
||||
{ [ 2dup > ] [ 2drop V{ } clone ] }
|
||||
{ [ dup 2 = ] [ 2drop V{ 2 } clone ] }
|
||||
{ [ dup 2 < ] [ 2drop V{ } clone ] }
|
||||
[ (primes-between) ]
|
||||
} cond ;
|
||||
|
||||
: primes-upto ( n -- seq ) 2 swap primes-between ;
|
||||
|
||||
: coprime? ( a b -- ? ) gcd nip 1 = ; foldable
|
||||
|
|
Loading…
Reference in New Issue