找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1822|回复: 10

[研讨] 分解质因数

[复制链接]

已领礼包: 1883个

财富等级: 堆金积玉

发表于 2015-9-13 16:49:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 aimisiyou 于 2015-9-14 19:01 编辑

(defun fj (n)
    (defun f (n)
       (if (= n 2)
         (setq va (list 2))
         (if (= n 3)
             (setq va (list 3 2))
             (if (= n 4)
                (setq va (list 3 2))
                (if (= n 5)
                    (setq va (list 5 3 2))
                    (if (= (apply '* (mapcar '(lambda (x) (rem n x)) (f (fix (sqrt n))))) 0)
                       (if (> (rem n 6) 1)
                          (setq va (f (- n -1 (rem n 6))))
                          (setq va (f (- n 1 (rem n 6))))
                        )
                       (if (= (rem n 6) 5)
                         (setq va (cons n (f (- n -1 (rem n 6)))))
                         (setq va (cons n (f (- n 1 (rem n 6)))))
                        )
                    )
                )
             )
         )
       )
     va
   )
  (if (null (member 0 (mapcar '(lambda (x) (if (= (rem n x) 0) 0 1)) (if (< n 9) (setq qlst (reverse (f 3))) (setq qlst (reverse (f (fix (sqrt n)))))))))
      (if (= n 1)(setq lst nil)(setq lst (list n)))
      (progn
             (setq a (cadr (car (vl-member-if '(lambda (x) (= (car x) 0)) (mapcar '(lambda (x y) (cons x (list y))) (mapcar '(lambda (x) (rem n x)) qlst)  qlst)))))
             (setq lst (cons a (fj (/ n a))))  
       )
   )
lst
)




论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 5604个

财富等级: 富甲天下

发表于 2015-9-14 08:19:01 | 显示全部楼层
系列IF,可用COND ((= n 2)(setq va (list 2))
((= n 3)(setq va (list 3 2)) ...
看起来好些

点评

;;;确实用cond函数看起来简洁些(defun fj (n) (defun f (n) (cond ((= n 2) (setq va (list 2))) ((= n 3) (setq va (list 3 2))) ((= n 4) (setq va (list 3 2)))  详情 回复 发表于 2015-9-14 19:06
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1883个

财富等级: 堆金积玉

 楼主| 发表于 2015-9-14 19:06:17 | 显示全部楼层
本帖最后由 aimisiyou 于 2015-9-14 19:32 编辑
HLCAD 发表于 2015-9-14 08:19
系列IF,可用COND ((= n 2)(setq va (list 2))
((= n 3)(setq va (list 3 2)) ...
看起来好些

;;;确实用cond函数看起来简洁些

(defun fj (n)
  (defun f (n)
      (cond
         ((= n 2) (setq va (list 2)))
         ((= n 3) (setq va (list 3 2)))
         ((= n 4) (setq va (list 3 2)))
         ((= n 5) (setq va (list 5 3 2)))
         ( t      (if (= (apply '* (mapcar '(lambda (x) (rem n x)) (f (fix (sqrt n))))) 0)
                         (if (> (rem n 6) 1)
                             (setq va (f (- n -1 (rem n 6))))
                             (setq va (f (- n 1 (rem n 6))))
                         )
                         (if   (= (rem n 6) 5)
                              (setq va (cons n (f (- n -1 (rem n 6)))))
                              (setq va (cons n (f (- n 1 (rem n 6)))))
                          )
                  )
          )
       )
    )
  (if (null (member 0 (mapcar '(lambda (x) (if (= (rem n x) 0) 0 1)) (if (< n 4) (setq qlst (reverse (f 3))) (setq qlst (reverse (f (fix (sqrt n)))))))))
      (if (= n 1)(setq lst nil)(setq lst (list n)))
      (progn
             (setq a (cadr (car (vl-member-if '(lambda (x) (= (car x) 0)) (mapcar '(lambda (x y) (cons x (list y))) (mapcar '(lambda (x) (rem n x)) qlst)  qlst)))))
             (setq lst (cons a (fj (/ n a))))  
       )
   )
lst
)


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1883个

财富等级: 堆金积玉

 楼主| 发表于 2015-9-15 19:19:05 | 显示全部楼层
本帖最后由 aimisiyou 于 2015-9-15 19:22 编辑

(defun fj (n)
     (setq i 2 k (fix (sqrt n)))
     (while (and (/= (rem n i) 0) (<= i k) (setq i (+ i 1)))
     )
     (if (= n 1)
         (setq va nil)
        (if (= i (+ 1 k))
              (setq va (list n))
              (setq va (cons i (fj (/ n i))))
          )   
      )
    va   )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1883个

财富等级: 堆金积玉

 楼主| 发表于 2015-9-16 01:45:18 | 显示全部楼层
本帖最后由 aimisiyou 于 2015-9-16 01:51 编辑

(defun fj (n)
  (defun f (n)
      (cond
         ((= n 2) (setq va (list 2)))
         ((= n 3) (setq va (list 3 2)))
         ((= n 4) (setq va (list 3 2)))
         ((= n 5) (setq va (list 5 3 2)))
         ( t      (if (= (apply '* (mapcar '(lambda (x) (rem n x)) (f (fix (sqrt n))))) 0)
                         (if (> (rem n 6) 1)
                             (setq va (f (- n -1 (rem n 6))))
                             (setq va (f (- n 1 (rem n 6))))
                         )
                         (if   (= (rem n 6) 5)
                              (setq va (cons n (f (- n -1 (rem n 6)))))
                              (setq va (cons n (f (- n 1 (rem n 6)))))
                          )
                  )
          )
       )
    )
   (defun ff (x)
       (if (= x 1)
           (setq nn 0)
           (setq nn (fix (/ (log (/ (log x) (log 2)))  (log 2)  )))
        )
    )
   (setq k (ff n))
   (while (and (> n 1)
               (/= (apply '*
                       (setq flst
                             (mapcar '(lambda (x) (if (= (rem n x) 0) 0 1))
                                      (setq qlst (reverse (f (fix (expt n (expt 0.5 k))))))
                              )
                         )
                     )
                0)
               (> (setq k (- k 1)) 0)
             )
    )
   (if (= n 1)
       (setq lst nil)
       (if (= k 0)
              (setq lst (list n))
              (progn
                 (setq a (cadr
                               (car
                                   (vl-member-if '(lambda (x) (= (car x) 0))
                                             (mapcar '(lambda (x y) (cons x (list y)))
                                                      flst  
                                                      qlst
                                              )
                                    )
                                 )
                           )
                   )
                  (setq lst (cons a (fj (/ n a))))  
              )
        )
   )
lst
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1883个

财富等级: 堆金积玉

 楼主| 发表于 2015-9-23 23:29:27 | 显示全部楼层
本帖最后由 aimisiyou 于 2015-11-1 22:55 编辑

(defun factor (n)
    (defun f (z)  (+ (* z z) 1))
    (setq x 1 y x k 0 i 1 d 1)
    (while (= d 1)
         (setq k (+ 1 k))
         (setq x (f x))
         (setq d (** (- x y) n))
         (cond
            ((and (< d n) (> d 1)) (princ d)(princ))
            ((= d n) (princ "此数是质数!"))
            (t (if (= k i) (progn (setq y x) (setq i (lsh i 1)))))
         )
    )
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1883个

财富等级: 堆金积玉

 楼主| 发表于 2020-4-27 10:36:36 | 显示全部楼层
GM老师有n个学生,每个学生需要完成一个项目。GM老师需要花Mi分钟为第i个学生布置任务,然后这个学生会独立不间断的用Ri分钟完成项目。请问GM老师需要选择怎样的顺序来布置任务,才能使得所有项目尽早执行完(也就是最后一个完成的学生尽快结束)。注意,GM老师不能同时给两个学生布置项目,但学生可以同时执行他们各自的项目。
输入要求
输入n+1行
第1行输入项目数n
第2行到n+1行,每行输入GM老师为这n个学生布置任务所需时间M和完成任务所需时间R
所有输入均为整数,其取值范围为[1, 1000]
输出要求
输出项目个数和所有项目完成的最短时间(分钟),格式如下:
Project n: m(其中,n代表项目个数,m代表最短时间,注意有换行)
详见输出样例
测试数据示例 1

输入
输出
3
3 6
4 3
3 2
Project 3: 12
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1883个

财富等级: 堆金积玉

 楼主| 发表于 2020-4-27 10:39:06 | 显示全部楼层
将学生完成作业时间按多到少排序
tol=sum(ti)+max{s1-t2-t3-……tn,s2-t3-t4……-tn,sn}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1883个

财富等级: 堆金积玉

 楼主| 发表于 2020-4-27 10:48:19 | 显示全部楼层
本帖最后由 aimisiyou 于 2020-4-27 10:51 编辑

Luhhy老师最近在研究字符串,只含有字符“a”和“b”的字符串。
她想定义一类串为孤独的串,这类串的特点是串中所有字符“a”只与“b”相邻或者无相邻字符(比如长度为1的字符串“a”)。
如“baba”是孤独的串,“babaa”不是孤独的串,因为最后一个“a”左边是“a”。
特殊的,一个只含有字符“b“的串不是孤独的串。
现在,给一个正整数n,Luhhy想知道长度为n的孤独的串的数量有多少个。
输入要求
输入数据第一行是一个正整数 T (1<=T<=100),表示数据组数。
接下来 T 行每行一个正整数 n (1<=n<=100),表示字符串长度。
输出要求
对于每组输入,输出一行,表示孤独的串的数量。
测试数据示例 1

输入
输出
3
1
2
4
1
2
7
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-22 10:28 , Processed in 0.356509 second(s), 51 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表