2017-10-20 1 views
4

저는 1:20으로 균등하게 나눌 수있는 가장 작은 숫자를 찾으려고합니다. 나는 함수를 만들어이 내가 무엇을 : 그것은 작은 간격에 대한 훌륭한 잘 작동1:20 중 가장 작은 배수 - 어떻게하면 더 빨리 만들 수 있습니까?

smallestN<- function(a,b) { 
    i<- 1 
    repeat { 
    if (all(i%%a:b == 0)) { 
     break 
    } else { 
     i<-i+1 
    } 
    } 
    return(i) 
} 

하지만 1시 20분 것이 시간이 오래 걸립니다. 코드를 좀 더 빨리 개선하려면 어떻게해야합니까?

답변

5

나는 당신이 Least Common Multiple 이후라고 생각합니다. 이이를 계산하는 몇 가지 방법이 있습니다,하지만 당신은 C/C++의 사용을 빠르게 구현이 될 것입니다 numbers 패키지

library(numbers) 

mLCM(1:20) 
# [1] 232792560 

볼 수 있습니다 당신을 시작하지만, 1:20 시나리오이 빠르다.

+0

고마워요! 훨씬 더 간단합니다. –

+0

@ ana.la - 여러분 안녕하세요. 이 질문에 대한 답변이 있으면 대답을 수락하려면 투표 화살표 아래에있는 '틱'을 누르거나 눌러야합니다. – SymbolixAU

관련 문제