
;;; primes.el

;; Copyright (C) 2014-2015 Davin Pearson

;; Emacs Lisp Archive Entry
;; Filename: primes.el
;; Author/Maintainer: Davin Pearson <http://davin.50webs.com>
;; Keywords: Prime number generator
;; Version: 1.0

;;; Commentary:

;; This file is not part of GNU Emacs.

;;; Limitation of Warranty

;; This program is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or (at
;; your option) any later version.
;;
;; This program is distributed in the hope that it will be useful, but
;; WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
;; General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs, see the file COPYING.  If not, see:
;;
;; <http://www.gnu.org/licenses/gpl-3.0.txt>.


;;; Known Bugs:

;; None so far!

;;; Code:


(defun is-prime (x)
  (if (or (= x 0) (= x 1) (> 0 x))
      nil
    (let ((i 2)
          (len (floor (sqrt x)))
          (is-prime t)
          (done nil))
      (while (and (<= i len) (not done))
        (when (= (* (/ x i) i) x)
          (setq is-prime nil)
          (setq done t))
        (incf i))
      is-prime)
    ))

(defun print-primes (max)
  (let ((i 0))
    (while (< i max)
      (if (is-prime i)
          (insert (format "%s " i)))
      (incf i))))

(is-prime (insert (format "%s" (+ (* 1000 1000) 3)))
(print-primes 1000000);;2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

;;; primes.el ends here
