Schlägerprogrammierung. Wo gehe ich falsch?

Die Frage, die ich zu beantworten versuche:
Die Primfaktoren von 13195 sind 5, 7, 13 und 29. Was ist der größte Primfaktor der Zahl 600851475143?

Wo gehe ich falsch? Mein Prime? Test scheint das Problem zu sein, aber es funktioniert gut bei relativ kleinen Zahlen. Aber die Primzahl? Test gibt eine falsche Antwort mit größeren Zahlen. Gibt es einen einfacheren Weg, dies zu tun?

    (define b 3)

    (define z 0)

    (define divides?
      (lambda (a b)
        (= (remainder a b) 0)))

    (define (prime? n)
        (cond
          ((or (= n 1) (= n 0)) false)
          ((even? n) false)
          ((= n 2) true)
          ((= n b) true)
          ((divides? n b) false)
          (else (and (set! b (+ b 1)) (prime? n)))))

    ;Largest Prime Factor Test
    (define (LPF x)
      (cond
        ((divides? 600851475143 x)
         (cond
           ((prime? x)
            (cond
              ((> x z) (set! z x)))))))
      (if (< x 775146) (LPF (+ x 1)) (display z)))

Antworten auf die Frage(2)

Ihre Antwort auf die Frage