Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scheme 素数分配方案_Scheme - Fatal编程技术网

Scheme 素数分配方案

Scheme 素数分配方案,scheme,Scheme,我有一个Scheme赋值,我需要显示2-100范围内的整数是否为素数。我知道这个方案不允许改变一个变量的值,但考虑到我是如何做到这一点的,我想知道这是否是固定的 (let loop ((i 2)) (begin (print "") (let loop ((j i)) (begin () (if (and (= (mod i j) 0) (not (= i j)))

我有一个Scheme赋值,我需要显示2-100范围内的整数是否为素数。我知道这个方案不允许改变一个变量的值,但考虑到我是如何做到这一点的,我想知道这是否是固定的

(let loop ((i 2))
  (begin (print "")
         (let loop ((j i))
           (begin ()
                  (if (and (= (mod i j) 0) (not (= i j)))
                      (print i " is NOT PRIME"))
                  (if (= j 2)
                      (print i " is PRIME")
                      (loop (- j 1)))))
         (if (= i 100)
             (print "done first")
             (loop (+ i 1)))))

目前,您需要忘记循环的计数,寻找递归模式和有用的抽象

例如,这段代码可能是有用的

(define (test n)
 (if (prime? n)
     (begin (display i) (display " is prime.") (newline))
     (begin (display i) (display " is NOT prime.") (newline))))

另外,
(let loop((var binding)…)body)
并不是您所认为的那样。对于i=x,它不是C
的变体。
循环在这里只是一个名称,你可以很容易地称它为hiccup或rose。该表单用于定义内部递归函数并使用特定表达式调用它也可以,但子函数无法从高度描述性的函数和自由变量名中受益。

Scheme允许使用
集合更改变量除了你编写代码的奇怪方式之外,我担心如果你使用这种算法来检测素数,你将无法通过考试。检查素数为100的最直接方法是保留一个向量,并查看输入是否在该向量中。到100的素数不多,谢谢。我试试这个。
prime?
的定义由您自己来写。这里的提示是,你只需要检查小于或等于n的平方根的数字的整除性,因为n的整数因子成对出现,其中一个必须小于平方根。