나는 적절한 제수의 합을 숫자와 동일하게하는 속성을 나타내는 숫자를 찾는 데 관심이 있습니다. 첫 번째 예제는 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 : 장소에 대한 여러분의 의견과 생각에 대한 모든 사람에게
감사 자세한 정보를 볼 수 있습니다.
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