2013-08-31 69 views
1

我有一个使用该命令执行的方案程序; (素数< = n)给我所有小于n的素数; (素数< = 200)给了我所有的素数小于200为参数方案程序创建一个可执行文件

如何在Linux中创建可执行下面以N能够作为上述程序为(素数执行参数

---------Scheme Program------------------------------------------------ 

    #lang racket 

(define (interval-list m n) 
    (if (> m n) 
     '() 
     (cons m (interval-list (+ 1 m) n)))) 
(define (sieve l) 
    (define (remove-multiples n l) 
    (if (null? l) 
     '() 
     (if (= (modulo (car l) n) 0)  ; division test 
       (remove-multiples n (cdr l)) 
       (cons (car l) 
        (remove-multiples n (cdr l)))))) 
    (if (null? l) 
     '() 
     (cons (car l) 
      (sieve (remove-multiples (car l) (cdr l)))))) 
(define (primes<= n) 
    (sieve (interval-list 2 n))) 

程序< = 100)打印小于100的所有素数

回答

1

看起来您使用的是Racket,因此您应该按照these instructions来创建您的可执行文件。一般来说,每个Scheme系统都提供了自己的方法来创建一个可执行文件,因此您必须阅读系统随附的文档。

你可能会喜欢这种替代实现埃拉托色尼的筛子:

(define (primes n) ; sieve of eratosthenes 
    (let ((ps (list)) (sieve (make-vector (+ n 1) #t))) 
    (do ((p 2 (+ p 1))) ((< n p) (reverse ps)) 
     (when (vector-ref sieve p) 
     (set! ps (cons p ps)) 
     (do ((i (* p p) (+ i p))) ((< n i)) 
      (vector-set! sieve i #f)))))) 
0

您可以通过插入

#! /usr/bin/env racket 

把球拍模块为Unix风格的脚本(如果球拍是你搜索路径)并使其可执行(chmod)。

有关更多详细信息,请参见docs for creating unix-style scripts

相关问题