2017-10-20 70 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之後。有幾種方法來計算,而是開始你了,你可以看看numbers

library(numbers) 

mLCM(1:20) 
# [1] 232792560 

將會有更快的實現,利用C/C++,但對於1:20情景,這是快。

+0

謝謝!簡單得多。 –

+0

@ ana.la - 不客氣。如果這回答您的問題,您可以/應該按下投票箭頭下的「嘀嗒」以接受答案。 – SymbolixAU