2017-10-20 59 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