1 ! Copyright (C) 2009 Doug Coleman.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: combinators.short-circuit kernel math math.functions
9 : safe-prime-candidate? ( n -- ? )
12 : next-safe-prime-candidate ( n -- candidate )
13 next-prime dup safe-prime-candidate?
14 [ next-safe-prime-candidate ] unless ;
18 : safe-prime? ( q -- ? )
19 { [ prime? ] [ 1 - 2 / prime? ] } 1&& ;
21 : next-safe-prime ( n -- q )
22 next-safe-prime-candidate
23 dup safe-prime? [ next-safe-prime ] unless ;
25 : random-safe-prime ( numbits -- p )
26 random-bits* next-safe-prime ;