【问题标题】:Project Euler #3 Scheme, Largest Prime Factor not changingProject Euler #3 方案,最大素因数不变
【发布时间】:2021-07-08 23:26:12
【问题描述】:

我一直在尝试解决 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)

我的问题是,无论计数器设置为什么值,最大因子都不会增加。我在这里做错了什么?

【问题讨论】:

    标签: scheme lisp prime-factoring


    【解决方案1】:

    (is-prime? c c) 将始终返回 #f,除非 c 为 1。既然您认为 1 是唯一的素数,那么它当然也是每个数的最大素数因数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-30
      • 1970-01-01
      • 2016-04-30
      • 2012-12-17
      相关资源
      最近更新 更多