# Project Euler Q5 :: Smallest multiple

Explanation. Standard caveat: don’t look here if you are trying to do these yourself.

2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder. What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20?

I’m getting the feeling that brute-force is going to be quite the useful tool for these questions. Thankfully R can churn through numbers really fast.

So, we’re after a number divisible by 1, 2, 3, ..., 10. Let’s vectorise that and check the stated answer

all(2520 %% 1:10 == 0)
## [1] TRUE

Easy enough. The solution value must be divisible by 20, so we can just test multiples of 20 for the above property

i <- 20
y <- FALSE
while(!y) {
i <- i + 20
y <- all(i %% 1:20 == 0)
}
i
## [1] 232792560
### CORRECT

Wrapping a system.time() call around that assures us that this is still done in under a minute, as per the guidelines

   user  system elapsed
26.150   0.000  26.192 

devtools::session_info()

## ─ Session info ──────────────────────────────────────────────────────────
##  setting  value
##  version  R version 3.5.2 (2018-12-20)
##  os       Pop!_OS 19.04
##  system   x86_64, linux-gnu
##  ui       X11
##  language en_AU:en
##  collate  en_AU.UTF-8
##  ctype    en_AU.UTF-8
##  tz       Australia/Adelaide
##  date     2019-08-13
##
## ─ Packages ──────────────────────────────────────────────────────────────
##  package     * version date       lib source
##  assertthat    0.2.1   2019-03-21 [1] CRAN (R 3.5.2)
##  backports     1.1.4   2019-04-10 [1] CRAN (R 3.5.2)
##  blogdown      0.14.1  2019-08-11 [1] Github (rstudio/blogdown@be4e91c)
##  bookdown      0.12    2019-07-11 [1] CRAN (R 3.5.2)
##  callr         3.3.1   2019-07-18 [1] CRAN (R 3.5.2)
##  cli           1.1.0   2019-03-19 [1] CRAN (R 3.5.2)
##  crayon        1.3.4   2017-09-16 [1] CRAN (R 3.5.1)
##  desc          1.2.0   2018-05-01 [1] CRAN (R 3.5.1)
##  devtools      2.1.0   2019-07-06 [1] CRAN (R 3.5.2)
##  digest        0.6.20  2019-07-04 [1] CRAN (R 3.5.2)
##  evaluate      0.14    2019-05-28 [1] CRAN (R 3.5.2)
##  fs            1.3.1   2019-05-06 [1] CRAN (R 3.5.2)
##  glue          1.3.1   2019-03-12 [1] CRAN (R 3.5.2)
##  htmltools     0.3.6   2017-04-28 [1] CRAN (R 3.5.1)
##  knitr         1.24    2019-08-08 [1] CRAN (R 3.5.2)
##  magrittr      1.5     2014-11-22 [1] CRAN (R 3.5.1)
##  memoise       1.1.0   2017-04-21 [1] CRAN (R 3.5.1)
##  pkgbuild      1.0.4   2019-08-05 [1] CRAN (R 3.5.2)
##  pkgload       1.0.2   2018-10-29 [1] CRAN (R 3.5.1)
##  prettyunits   1.0.2   2015-07-13 [1] CRAN (R 3.5.1)
##  processx      3.4.1   2019-07-18 [1] CRAN (R 3.5.2)
##  ps            1.3.0   2018-12-21 [1] CRAN (R 3.5.1)
##  R6            2.4.0   2019-02-14 [1] CRAN (R 3.5.1)
##  Rcpp          1.0.2   2019-07-25 [1] CRAN (R 3.5.2)
##  remotes       2.1.0   2019-06-24 [1] CRAN (R 3.5.2)
##  rlang         0.4.0   2019-06-25 [1] CRAN (R 3.5.2)
##  rmarkdown     1.14    2019-07-12 [1] CRAN (R 3.5.2)
##  rprojroot     1.3-2   2018-01-03 [1] CRAN (R 3.5.1)
##  sessioninfo   1.1.1   2018-11-05 [1] CRAN (R 3.5.1)
##  stringi       1.4.3   2019-03-12 [1] CRAN (R 3.5.2)
##  stringr       1.4.0   2019-02-10 [1] CRAN (R 3.5.1)
##  testthat      2.2.1   2019-07-25 [1] CRAN (R 3.5.2)
##  usethis       1.5.1   2019-07-04 [1] CRAN (R 3.5.2)
##  withr         2.1.2   2018-03-15 [1] CRAN (R 3.5.1)
##  xfun          0.8     2019-06-25 [1] CRAN (R 3.5.2)
##  yaml          2.2.0   2018-07-25 [1] CRAN (R 3.5.1)
##
## [1] /home/jono/R/x86_64-pc-linux-gnu-library/3.5
## [2] /usr/local/lib/R/site-library
## [3] /usr/lib/R/site-library
## [4] /usr/lib/R/library