注册 登录
明经CAD社区 返回首页

mahuan1279的个人空间 http://www.mjtd.com/?7303115 [收藏] [复制] [分享] [RSS]

日志

求n以内所有素数递归算法及筛法

已有 1035 次阅读2014-10-24 17:07 |个人分类:LISP|系统分类:插件| 求n以内所有素数

;;;递归算法
(defun f (n)
     (if (= n 2) 
         (setq va (list 2)) 
         (if (= n 3)
             (setq va (list 3 2))
             (if (= (apply '* (mapcar '(lambda (x) (rem n x)) (f (fix (sqrt n))))) 0)
               (setq va (f (- n 1 (rem n 2))))
               (setq va (cons n (f (- n 1 (rem n 2)))))
             )
         )
      )
  va
)
(reverse (f 1000))

;;;筛法
(defun f (n)
  (setq i 3 lst nil)
  (while (<= i n)
          (setq lst (cons i lst))
          (setq i (+ i 2))
   )
  (setq llst (cons 2 (reverse lst)))
  (setq flst nil)
  (while (and (/= (cdr llst) nil) (/= (setq c (nth 0 llst)) nil))
       (setq flst (cons c flst))
       (setq llst (vl-remove-if '(lambda (x) (= (rem x c) 0)) (cdr llst)))
  )
  (reverse (cons (car llst) flst))
)
(f 1000)


 已同步至 mahuan1279的微博

路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-23 14:38 , Processed in 0.100745 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部