; Seek primes in arithmetic sequence a + n*b.
; http://cap-lore.com/code/mult/ff.txt
(lambda (a b)(let* (
  (mod-exp (lambda (b p m) (let me ((p p))(cond ((= p 0) 1)
   ((even? p)(let ((x (me (/ p 2))))(modulo (* x x) m)))
   (#t (modulo (* b (me (- p 1))) m))))))
  (pt (lambda (a n) (or (= n 2) ; Miller-Rabin
   (let* ((nm1 (- n 1))(pr
      (let z ((d nm1)(k 0))(if (odd? d)(cons d k) (z (/ d 2)(+ k 1)))))
          (d (car pr))(k (cdr pr)))
   (let lp ((r 0)(y (mod-exp a d n)))
       (or (and (= r 0)(= y 1)) (= y nm1)
       (and (< (+ r 1) k)(lp (+ r 1)(modulo (* y y) n)))))))))
  (ww (lambda(n x)(display (list n x)) x))
  (g (gcd a b))(n (modulo b 30030))
  (random (((fileVal "RC4") 'rbi "ijos") (+ a (if (positive? b) 0 (* 2000 b)))))
  (probe (+ 1 (random))))
   (if (> g 1) (list "Always divisible by" g)
     (let more ((a1 a)(m (modulo a 30030))(cn 0))
    (if (and (let all ((l (list 2 3 5 7 11 13)))(or (null? l)
      (and (positive? (remainder m (car l))) (all (cdr l)))))
        (let all ((l 20)(p probe)) (or (zero? l)
          (and (ww cn (pt p a1))
      (all (- l 1)(+ 1 (random)))))))
      a1
      (begin (display ",")(more (+ a1 b)(modulo (+ m n) 30030)(+ cn 1))))))))


((fileVal "RC4") 'rbi) 