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

関連する問題