I did this as follows, which takes less than 1 second on my computer (your version took about 12.5 seconds):
#lang racket (define (divides? n div) (= (remainder n div) 0)) (define (prime? n) (prime-helper n 2)) (define (prime-helper n start) (cond ((> start (sqrt n)) #t) ((divides? n start) #f) (else (prime-helper n (+ 1 start))))) (define (prob7_helper n count) (cond ((= 10001 count) (- n 1)) ((prime? n) (prob7_helper (+ 1 n) (+ 1 count))) (else (prob7_helper (+ 1 n) count)))) (define (prob7) (prob7_helper 2 0)) (prob7)
There are, of course, faster implementations (prime? n) , but that does the trick for me.
source share