卢卡斯在Scheme

时间:2018-04-17 14:55:44

标签: scheme racket primes primality-test

  

为了展示如何用Lucas序列检查素数,让我们来看看   一个例子。考虑卢卡斯序列中的前几个数字:   1,3,4,7,11,18,29,47,76,123,...

     

如果我们有兴趣看一个特定的数字,比如7,是否为素数,   我们取Lucas序列中的第7个数并减去1.第7个   卢卡斯数是29.减1,我​​们有28.现在,如果这个结果是   被7整除的可能是素数。在我们的例子中,28是   可以被7整除,所以可能是素数。我们将这些数字称为 Lucas   伪素

     

如果我们对另一个号码感兴趣,比如8,我们会选择第8个   卢卡斯数和减1.在这种情况下,我们得到46,而不是   可以被8整除。因此,8 绝对不是素数。这个方法是   用于过滤复合数字。

     

因此,确定整数 p 是否可能的一般过程   素数如下:

     
      
  1. 找到 p 卢卡斯数
  2.   
  3. 减1
  4.   
  5. 检查 p 是否均匀划分结果
  6.         

    定义一个名为(lucas-pseudoprime p)的SCHEME函数   这种确定整数 p 是否为Lucas伪伪的方法。

到目前为止,我有这个:

(define (lucas-pseudoprime p)
  (define (helper-lucas goal current next)
    (if (= goal current)
        (head next)
        (helper-lucas goal (+ current 1) next))
    (let ((solution (- p 1))
      (if (= (module solution p) 0) #t
          #f)))))

不确定这是怎么回事。

0 个答案:

没有答案