[問題] 質因數分解

看板R_Language作者 (好厲害)時間10年前 (2015/11/04 17:17), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/4 (看更多)
[問題類型]: 效能諮詢(我想讓R 跑更快) [軟體熟悉度]: 入門(寫過其他程式,只是對語法不熟悉) [問題敘述]: 質因數分解 [程式範例]: 想寫一個程式對正整數n作質因數分解 目標是n<10^8 可以1min跑完 我的程式大概要6~7min 改進空間應該很大 而太慢的主因應該是列出<n質數表的程式太慢 請大家賜教 質數表的程式: primeY <- function(num){ sqnum <- floor(sqrt(num)) x <- c(2:num) y <- c() repeat{ if(x[1] > sqnum) break y <- c(y, x[1]) x <- x[x %% x[1] != 0] } return(c(y,x)) } 質因數分解的程式: primefactor <- function(num){ p <- primeY(num)[which(num %% primeY(num) == 0)] q <- c() e <- c() for(i in 1:length(p)){ e[i] <- 1 q[i] <- num / p[i] repeat{ if(q[i] %% p[i] != 0) break e[i] <- e[i] + 1 q[i] <- q[i] / p[i] } } return(list('pfactor'=p, 'multi'=e)) } [環境敘述]: R 3.2.2 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.61.134.14 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1446628646.A.D6C.html
文章代碼(AID): #1MESqcri (R_Language)
討論串 (同標題文章)
文章代碼(AID): #1MESqcri (R_Language)