我有興趣找到顯示其正確除數的總和等於數字的屬性的數字。第一個例子是6,其中正確的除數是1 + 2 + 3 = 6.算法來確定正確的除數
我在R中編寫了下面的代碼,但我覺得它效率很低,可以大大改進。
propDivisor <- function(
max
)
{
n<-{}
for(j in 2:max){
m<-{}
for(i in 1:(j/2+1)){
if(j%%i==0){m<-c(m,i)}
}
if(sum(m)==j){n<-c(n,j)}
}
return(cat("The proper divisors between 1 and", max, "are", n, ".", sep=" ") )
}
有沒有人有任何建議,以改善下面的代碼?我覺得應該在這裏使用一個應用函數。也許這將是一個體面的代碼高爾夫球運動的未來?
而且據我所知,這個問題在這裏出現得有點頻繁,這不是一個家庭作業問題,而只是一個同事今天早些時候提出的一個有趣的編碼挑戰者。
UPDATE:
感謝大家對你的意見和想法對地方尋找更多的信息。這裏有另一種利用sapply的解決方案:
D <- function(n) sum((1:(n-1))[n%%1:(n-1)==0])==n
(2:9000)[sapply(2:9000,D)]
你可能想看看這裏檢查你的結果:http://www.research.att.com/~njas/sequences/A000396 – nico 2010-06-29 05:53:42