如何解决Project Euler #3 Scheme,最大素因数不变
我一直在尝试解决 Scheme 中的 Project Euler 问题,并且我已经为问题 3 编写了这个:
(define (largest-prime n c lf)
(define (is-factor? n f)
(if (= (remainder n f) 0)
#t #f))
(define (is-prime? n c)
(cond
((= c 1) #t)
(else
(if (= (remainder n c) 0) #f
(is-prime? n (- c 1))))))
(display `(counter:,c current largest factor:,lf))
(newline)
(cond
((= c n) lf)
(else
(if (and (is-factor? n c) (is-prime? c c))
(largest-prime n (+ c 1) c)
(largest-prime n (+ c 1) lf)))))
(display `(largest prime:,(largest-prime 600851475143 1 0)))
输出是一大块文本(显示的目的是为了跟踪程序的进度),其中一行示例是:
(counter: 245337 current largest factor: 1)
我的问题是,无论计数器设置为什么值,最大因子都不会增加。我在这里做错了什么?
解决方法
(is-prime? c c)
将始终返回 #f
,除非 c
为 1。既然您认为 1 是唯一的素数,当然它也是每个数的最大素数因子。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。