Problem 3
13195 の素因数は 5、7、13、29 である。
600851475143 の素因数のうち最大のものを求めよ。
Problem 3 - PukiWiki
Ruby
a = 600851475143 x = [] while a != 1 do for i in 2..a do if a%i == 0 then x << i a = a/i break end end end puts x.max
何も考えないで書いたらRubyらしさってなんだろ〜みたいなコードになってしまった。
R
a <- 600851475143 x <- NULL while(a != 1) { i <- 2 while(i <= a) { if(a%%i == 0) { x <- append(x, i) a <- a/i break } i <- i+1 } } print(max(x))
Rubyのをほぼそのまま移植。
最初は、
while(a != 1) { for(i in 2:a) { if(a%%i == 0) { x <- append(x, i) a <- a/i break } } }
って書いてたんだけど、ベクトルが長すぎるって怒られるなどしたのでやむなくwhileで書き直すなどした。2:600851475143が無理だったのね…