[问题] 质因子分解

楼主: 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