[問題] 質因數分解

作者: haolihy (好厲害)   2015-11-04 17:17:24
[問題類型]:
效能諮詢(我想讓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

Links booklink

Contact Us: admin [ a t ] ucptt.com