]> gitweb.factorcode.org Git - factor.git/commitdiff
math.primes.twins: calculating twin primes.
authorJohn Benediktsson <mrjbq7@gmail.com>
Thu, 19 Apr 2012 22:14:31 +0000 (15:14 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Thu, 19 Apr 2012 22:14:31 +0000 (15:14 -0700)
extra/math/primes/twins/twins-tests.factor [new file with mode: 0644]
extra/math/primes/twins/twins.factor [new file with mode: 0644]

diff --git a/extra/math/primes/twins/twins-tests.factor b/extra/math/primes/twins/twins-tests.factor
new file mode 100644 (file)
index 0000000..4188365
--- /dev/null
@@ -0,0 +1,13 @@
+! Copyright (C) 2012 John Benediktsson
+! See http://factorcode.org/license.txt for BSD license
+
+USING: tools.test ;
+
+IN: math.primes.twins
+
+{ { } } [ 3 twin-primes-upto ] unit-test
+{ { V{ 3 5 } V{ 5 7 } V{ 11 13 } } } [ 13 twin-primes-upto ] unit-test
+
+{ t } [ 3 5 twin-primes? ] unit-test
+{ f } [ 2 4 twin-primes? ] unit-test
+{ f } [ 3 7 twin-primes? ] unit-test
diff --git a/extra/math/primes/twins/twins.factor b/extra/math/primes/twins/twins.factor
new file mode 100644 (file)
index 0000000..449dfad
--- /dev/null
@@ -0,0 +1,13 @@
+! Copyright (C) 2012 John Benediktsson
+! See http://factorcode.org/license.txt for BSD license
+
+USING: combinators.short-circuit grouping kernel math
+math.primes sequences ;
+
+IN: math.primes.twins
+
+: twin-primes-upto ( n -- seq )
+    primes-upto 2 <clumps> [ first2 - abs 2 = ] filter ;
+
+: twin-primes? ( x y -- ? )
+    { [ - abs 2 = ] [ nip prime? ] [ drop prime? ] } 2&& ;