Problem 41 - Project Euler
辞書順に並べて判定かけようと思ったけどなんかうまくいかなかった。
is.prime <- function(n){ if(n == 1) return(FALSE) if(n < 4) return(TRUE) if(n%%2==0) return(FALSE) if(n < 9) return(TRUE) if(n%%3==0) return(FALSE) r <- floor(sqrt(n)) f <- 5 while(f <= r){ if(n%%f == 0) return(FALSE) if(n%%(f+2) == 0) return(FALSE) f <- f + 6 } return(TRUE) } toDigits <- function(n){ rev(floor(n/(10^(0:floor(log(n, 10)))))%%10) } i <- 7654321 while(!(is.prime(i) && setequal(toDigits(i),1:7))){ i <- i-1 }
答えが7桁ってのはなんとなく予想ついたのでそれを利用してしまっている。
まあ10msくらいで終わったからこれでいいか。